C++笔试强训4

文章目录

  • 一、选择题
    • 1-5题
    • 6-10题
  • 二、编程题
    • 题目一
    • 题目二


一、选择题

1-5题

在这里插入图片描述
%o就是输出八进制的无符号数,0123,,以0开头·,本来就是八进制,所以输出为123,123是十进制,转化为八进制就是173.
故选C。

  1. %d%i:用于输出 int 类型的整数。
  2. %u:用于输出无符号 int 类型的整数。
  3. %ld%li:用于输出 long int 类型的整数。
  4. %lld%lli:用于输出 long long int 类型的整数。
  5. %o:用于输出无符号整数,以八进制形式显示。
  6. %x%X:用于输出无符号整数,以十六进制形式显示(%x 生成小写字母,%X 生成大写字母)。
  7. %f:用于输出 floatdouble 类型的浮点数。
  8. %c:用于输出单个字符。
  9. %s:用于输出字符串。
  10. %p:用于输出指针变量的值。
  11. %e:用于输出浮点数,采用科学计数法。
  12. %g:根据数值和精度,自动选择 %f%e 格式。
  13. %%:用于输出 % 字符。

在这里插入图片描述
A选项,2二进制是10,~2是01,flag和它进行与运算,同1才是1,所以,第二位一定会被置0.
故选A。

  1. 位与(AND)&

    • 用法:result = a & b;
    • 功能:对ab中的每一位执行逻辑与操作。如果两位都是1,则结果的该位是1,否则是0。
  2. 位或(OR)|

    • 用法:result = a | b;
    • 功能:对ab中的每一位执行逻辑或操作。如果两位中至少有一位是1,则结果的该位是1,否则是0。
  3. 位非(NOT)~

    • 用法:result = ~a;
    • 功能:对a中的每一位执行逻辑非操作。如果某位是1,则结果的该位是0,如果某位是0,则结果的该位是1。
  4. 位异或(XOR)^

    • 用法:result = a ^ b;
    • 功能:对ab中的每一位执行逻辑异或操作。如果两位不同,则结果的该位是1,如果两位相同,则结果的该位是0。
  5. 左移<<

    • 用法:result = a << n;
    • 功能:将a的二进制表示向左移动n位。右边空出的位用0填充。
  6. 右移>>

    • 用法:result = a >> n;
    • 功能:将a的二进制表示向右移动n位。对于无符号数,左边空出的位用0填充;对于有符号数,具体行为(用0填充还是用符号位填充)取决于编译器。

使用位运算时,需要注意操作的数通常是整数类型,而且位运算直接对内存中的位进行操作,因此效率很高。同时,位运算也可以用于实现一些特定的算法,比如快速计算2的幂、交换两个数的值而不使用临时变量等。


在这里插入图片描述
指向内存地址不能改变,指针常量,const在*右边,故选B。
A:const都在*前都是指向可以修改,但指向空间的内容不能改。

B:x指针指向不能修改,但是指向空间中的内容是可以修改

C:x指向可以修改,但是指肉空间中的内容不能修改

D:x指向可以修改,但是指向空间中的内容不能修改

E:x指针的指向不能修改,指针指向空间中的内容也不能修改

const在*前:const修饰的是解引用的结果不能修改,即指向执行空间中的内容不能修改
const在*后:const修饰指针变量本身,即指针的值不能修改,指针的指向不能修改


在这里插入图片描述
a是数组名,&a表示数组的地址,&a+1表示指针偏移一个数组的大小,即5个int大小的字节数,因此&a+1指向数组最后一个元素的下一个元素,在强转为int*,进行±操作移动的步长就会改变成一个int大小,因此,p-1指向元素9,*(p-1)就是9。而a是数组首元素,a+1,指向数组第二个元素,解引用完就是3.
故选C。

知识点,数组名是数组首元素的地址,&数组名是数组的地址,相同点,都指向同一个位置,不同点±操作移动的步长不一样。


在这里插入图片描述
不知道总共有多少行,每行有多少列
假设:数组X的起始地址为start,总共有M行,N列

&x[4][4]= start+ 4N+4=0xf8b82140
&x[9][9]= start + 9
N+9 = 0xf8b8221c
上面这是个方程组嘛,两个方程组两个未知数,解一下,得到
start=0xF8B82090
N=43

&x[7][7]= start + 7*N+7=F8B821C4

故选A。

在这里插入图片描述


6-10题

在这里插入图片描述
如图2^4=16
故选D。
在这里插入图片描述


在这里插入图片描述数组名表示数组首元素的地址,只有在&和sizeof之后才表示数组的本身
"morning"的类型是char*
p=a;p就必须给成二级指针

p原先指向第一个字符串,++之后就是指向第二个字符串,故选A。
在这里插入图片描述


在这里插入图片描述
假设x=7---->111
x=7&6=111&110=110 x=6
第-次循环:count+±–>count:1
第二次循环:count+±–>count:2 x=6&5=110&101=100 x=4
第三次循环:count+±–>count:3 x=4&3=100&011=0
最终返回的就是3

由此可以看出该函数的功能:返回x中总共有多少个1
因此把9999换算成二进制看它有几个1就好,把9999换成二进制就是10011100001111一共有8个1,所以选A。


在这里插入图片描述
FO递归1次
F1递归1次
F2:FO+F1=递归3次
F3:F2+F1=1+3+1 =5
F4:F3+F2=1+5+3=9
F5:F4+F3=1+9+5=15
F6:F5+F4=1+15+9=25
F7:F6+F5=1+25+15=41
F8:F7+F6=1 + 41 + 25 =67

故选B。


在这里插入图片描述
1.结构体为什么要对齐?
2.结构体是如何进行对齐?
3.如果想要让结构体按照任意字节对齐该如何处理?

结构体对齐:
1.保证每个成员都放在一个对齐的地址上=== min(该成员类型大小 , 对齐参数) 能否被偏移量整除
如果可以被整除,则在对齐的地址上
如果不可以被整除,则需要补一些字节让其可以整除
第一步算完之后,结构体已经有了一个总的大小
2.对结构体整体来对齐:min(在数组中找类型最大的成员所占字节,对齐参数)看能否被第一步算出来的结构体的大小整除
如果可以被整除,则在对齐的地址上
如果不可以被整除,则需要补一些字节让其可以整除

故选C。


二、编程题

题目一

题目链接:
计算糖果

在这里插入图片描述

提交代码:

#include <iostream>
using namespace std;

int main() {
    int a,b,c,d;
    while(cin>>a>>b>>c>>d)
    {
        //A-B=a
        //B-C=b
        //A+B=c
        //B+C=d
        int A=(a+c)/2;
        int B1=(c-a)/2;
        int B2=(b+d)/2;
        int C=(d-b)/2;
        if(B1!=B2)
        {
            cout<<"No";
        }
        else {
        {
            cout<<A<<" "<<B1<<" "<<C;
        }
        }
    }

}
// 64 位输出请用 printf("%lld")

运行结果:
在这里插入图片描述


题目二

题目链接:
进制转换
在这里插入图片描述

提交代码:

#include <algorithm>
#include <string>
#include <iostream>
using namespace std;

int main() {
    string s,table="0123456789ABCDEF";
    int m,n;
    bool flag=false;
    cin>>m>>n;
    if(m==0)
    {
        cout<<0;
    }
    if(m<0)
    {
        m=0-m;
        flag=true;
    }
    while(m!=0)
    {
        s+=table[m%n];
        m/=n;
    }
    if(flag) s+='-';
    reverse(s.begin(), s.end());
    cout<<s;
    return 0;

}
// 64 位输出请用 printf("%lld")

运行结果:
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/799332.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双向带头循环链表

一、概念 何为双向&#xff1a;此链表每一个节点的指针域由两部分组成&#xff0c;一个指针指向下一个节点&#xff0c;另一个指针指向上一个节点&#xff0c;并且两头的节点也是如此&#xff0c;头节点的下一个节点是尾节点&#xff0c;尾节点的上一个节点是头节点&#xff1b…

C++ — 引用浅谈

引言 在C的语法规则中&#xff0c;定义了一种新的方法&#xff0c;叫做引用。在学习的初期&#xff0c;引用的作用很类似于指针&#xff08;但需要注意引用不等于指针&#xff09;&#xff0c;引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名。 在上边…

Cesium--获取当前相机中心与地面的射线焦点

本文记录获取当前相机中心与地面的射线焦点的方法&#xff0c;可用于视角缩放过程中&#xff0c;控制视角自动平滑切换到二维等场景&#xff1a; 方法一定是视角中心能与地面有交集&#xff0c;如果对着地平线或对着天空肯定是没效果的。直接放代码&#xff1a; //调整相机到正…

链接追踪系列-04.linux服务器docker安装elk

[rootVM-24-17-centos ~]# cat /proc/sys/vm/max_map_count 65530 [rootVM-24-17-centos ~]# sysctl -w vm.max_map_count262144 vm.max_map_count 262144 #先创建出相应目录&#xff1a;/opt/dockerV/es/…docker run -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d -p 92…

单目3D和bev综述

文章目录 SOTA2D 检测单目3d检测3d bev cam范式1 Transformer attention is all you need 20172 ViT vision transformer ICLR 2021google3 swin transformer 2021 ICCV bestpaper MS4 DETR 2020 decoder set match4 Deformabel DETR &#xff08;deformabel convolution&#…

c++包管理器

conan conan search&#xff0c;查看网络库 conan profile detect&#xff0c;生成缓存信息conan new cmake_exe/cmake_lib&#xff0c;创建cmakelists.txtconan install .&#xff0c;执行Conanfile.txt中的配置&#xff0c;生成相关的bat文件 项目中配置Conanfile.txt(或者…

k8s核心操作_存储抽象_K8S中的持久卷与持久卷申请_PV/PVC理解与搭建_解决联动删除动态存储管理---分布式云原生部署架构搭建029

我们之前使用nfs搭建了一个存储系统,并且使用nfs的自动同步,让,不同节点上部署的应用,都可以,访问到自己的配置文件,并且 当pod宕机,在其他机器上启动,也可以访问到配置文件,但是这里依然有问题. 1.首先对于nfs上的文件夹,现在是我们自己创建的,有很多程序会自动创建很多文件夹…

知识图谱与LLMs:实时图分析(通过其关系的上下文理解数据点)

大型语言模型 (LLM) 极大地改变了普通人获取数据的方式。不到一年前&#xff0c;访问公司数据需要具备技术技能&#xff0c;包括熟练掌握各种仪表板工具&#xff0c;甚至深入研究数据库查询语言的复杂性。然而&#xff0c;随着 ChatGPT 等 LLM 的兴起&#xff0c;随着所谓的检索…

贪心算法案例

1.买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…

贝塞尔曲线基础

贝塞尔曲线于1962年由法国工程师皮埃尔贝塞尔&#xff08;Pierre Bzier&#xff09;所广泛发表&#xff0c;他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发&#xff0c;以稳定数值的方法求出贝兹曲线。 贝塞尔…

基于ARM Cortex-M3单片机研发的国产指纹芯片 - P1032BF1

智能指纹锁的核心部件&#xff1a;主板、离合器、指纹采集器、密码技术、微处理器&#xff08;CPU&#xff09;、智能应急钥匙。作为指纹锁来说&#xff0c;重要的应该是指纹芯片。指纹锁是通过电子部件及机械部件的精密组合而生产出的安全产品。指纹锁的本质无非是安全、便捷、…

配置Redis时yml的格式导致报错

报错如下 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.su…

C++面试问题

C基础 什么是野指针&#xff1f; 指向未分配或已释放内存的指针。比如未初始化、delete后未指向空、保存了局部变量的地址 怎么解决野指针问题&#xff1f; 使用智能指针释放后置空指针初始化避免返回局部变量的地址 C空类会创造那些函数&#xff1f; 默认构造析构函数拷…

【Linux】重定向,dup2

2.重定向 2.1.输出重定向 1.输入重定项。 我们之前学习过的输出重定向就是&#xff0c;将我们本应该输出到显示器上的数据重定向输出到另一个文件中。那他的原理是什么了&#xff1f; 例如&#xff1a; 如果我们想让本应该输出到“显示器文件”的数据输出到log.txt文件当中&…

Spring webflux基础核心技术

一、 用操作符转换响应式流 1 、 映射响应式流元素 转换序列的最自然方式是将每个元素映射到一个新值。 Flux 和 Mono 给出了 map 操作符&#xff0c;具有 map(Function<T&#xff0c;R>) 签名的方法可用于逐个处理元素。 当操作符将元素的类型从 T 转变为 R 时&#xf…

Linux虚拟机扩展磁盘空间

文章目录 在VM上进行扩展新的磁盘空间进入虚拟机将扩展的磁盘空间分配给对应的分区 VM 下的Linux虚拟机提示磁盘空间不足&#xff0c;需要对其进行磁盘扩容&#xff0c;主要有以下两步&#xff1a; 在VM上进行扩展新的磁盘空间 先关闭虚拟机在VM的虚拟机设置处进行硬盘扩展 …

电脑关机被阻止

1. winR输入regedit进入注册表 2. 选择HKEY_USERS-》.DEFAULT-》Control Panel-》Desktop 3. 右键DeskTop新建字符串值&#xff0c;命名为AutoEndTasks&#xff0c;数值设置为1

C++_入门

C入门 C发展历程 C的起源可以追溯到1979年&#xff0c;当时Bjarne Stroustrup(本贾尼斯特劳斯特卢普&#xff0c;这个翻译的名字不同的地⽅可能有差异)在贝尔实验室从事计算机科学和软件⼯程的研究工作。面对项目中复杂的软件开发任务&#xff0c;特别是模拟和操作系统的开发…

【SQL】DML、DDL、ROLLBACK 、COMMIT详解

DML DML&#xff08;Data Manipulation Language&#xff09;数据操作语言&#xff0c;是用于对数据库中的数据进行基本操作的一种编程语言。DML是数据库管理系统&#xff08;DBMS&#xff09;中的一个重要部分&#xff0c;它允许用户或应用程序对数据库中的数据进行增、删、改…

君方智能设计平台-数据对象升级框架设计

1.设计背景 由于文件存储基于流存储&#xff0c;目前处于快速开发阶段&#xff0c; 修改对象数据结构很频繁。对象数据结构的修改&#xff0c;会破坏文件的二进制内存结构&#xff0c;版本发布时导致一些已创建的项目文件不能正常打开。目前的解决方案是&#xff0c;先将文件导…