当前位置: 首页 > news >正文

C语言—每日选择题—Day42

第一题

1. 下面程序输出的结果是()

#include <stdio.h>
int main () 
{int x;x = printf("I See, Sea in C");printf("x=%d" , x); 
}

A:2

B:随机值

C:都不是

D:15

答案及解析 D

printf函数的返回值是int类型,返回的是打印出的字符的个数,并且printf遇到\0结束打印,所以题中共有15个字符,x就为15;

详情可以看这里:printf返回值的定义与举例-CSDN博客

第二题

2. 求函数返回值,输入x=9999

int func(int x)
{int count = 0;while (x){count++;x = x&(x - 1);}return count;
}

A:8

B:9

C:10

D:12

答案及解析 A

本题有一个位运算的公式,x & (x - 1)可以消除最右侧的1,使其变为0;所以这个while循环的作用就是看x有多少个1的;

9999的二进制位:10011100001111

一共有8个1,所以返回的就是8

第三题

3. 下面程序的1,2,3处表达式的值为()

int main()
{int n = 1;++n;n++; // 1--n; // 2++n; // 3return 0;
}

A:2 2 3

B:2 2 2

C:2 3 2

D:2 1 1

答案及解析 A

本题考查的是前置++和后置++ 的区别;

前置++,返回的是++之后的值,后置++返回的是++之前的值;--也是;

别忘了1处上面有个++n;

所以1处:表达式的值为2,但是n = 3;

2处:表达式的值为2,n = 2;

3处:表达式的值为3,n = 3;

在C++中的运算符重载就很好地可以看出,前置++和后置++的区别;前置++返回的就是++之后的值,而后置++,是将这个数拷贝了一份返回去,但是这个数自身已经增加1了;

    A& operator++(){*this += 1;return *this;}A operator++(int){A copy = *this;*this += 1;return copy;}

第四题

4. 有如下代码段:

char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};

则正确的叙述为()

A:数组 x 和数组 y 等价

B:strlen(x) > strlen(y)

C:strlen(y) >= strlen(x)

D:sizeof(y) > sizeof(x)

答案及解析 C

A:错误,x是一个字符串,而y是一个字符数组,字符串和字符数组的区别就是末尾有没有隐藏的\0,字符串末尾一定是有一个隐藏的\0,但是字符数组的\0的具体位置是随机的;

B错C对:因为strlen函数是求字符串长度的,其中只有遇到\0才会停止计算,然后返回\0之前的字符个数,上面也说了,y这个字符数组的\0的位置是不确定的,所以可能在末尾,也可能在更之后,所以strlen(y) >= strlen(x)的;

D:错误,x的大,这个是计算占用多少内存的,x有个隐藏的\0也是申请空间了的;

第五题

5. 有以下定义和语句,则 *( p[0] + 1) 所代表的数组元素是()

int a[3][2] = {1, 2, 3, 4, 5, 6}, *p[3];
p[0] = a[1];

A:a[ 0 ][ 1 ]

B:a[ 1 ][ 0 ]

C:a[ 1 ][ 1 ]

D:a[ 1 ][ 2 ]

答案及解析

首先,int *p[ 3 ]是一个指针数组,因为[ ]的优先级高,所以会先形成数组,然后每个元素的类型是int*;其次p [ 0 ]存的是a[ 1 ]的地址,a[ 1 ]代表的是这个二维数组第二行的首元素地址;因为a[ 1 ][ 2 ]相当于的就是第二行这个一维数组,a[ 1 ]就是这个一维数组的数组名,数组名代表首元素地址,也就是a[ 1 ][ 0 ]的地址;

p[ 0 ] <==> a[ 1 ] <==> &a[ 1 ][ 0 ]

p[ 0 ] + 1 <==> &a [ 1 ][ 0 ] + 1 <==> &a[ 1 ][ 1 ]

*(p[ 0 ] + 1)  <== > a[ 1 ][ 1 ]

http://www.lryc.cn/news/260298.html

相关文章:

  • jsp文件引用的css修改后刷新不生效问题
  • SpringBoot运维中的高级配置
  • Centos7下OpenLDAP安装
  • 2036开关门,1109开关门
  • 最简单的pixel刷机和安装面具、lsposed
  • 深度学习第5天:GAN生成对抗网络
  • 从零开始搭建企业管理系统(七):RBAC 之用户管理
  • phpstudy搭建WordPress教程
  • typedef的使用
  • 服务器系统启动卡logo问题解决分析
  • Linux NAPI ------------- epoll边缘触发模式
  • 使用poi-tl填充word模板,并转化为pdf输出
  • 计算机视觉-机器学习-人工智能 顶会会议召开地址
  • GAN的原理分析与实例
  • 什么是POM设计模式?
  • 没有数据线,在手机上查看电脑备忘录怎么操作
  • Elasitcsearch--解决CPU使用率升高
  • vue和jQuery有什么区别
  • [Android] Binder all-in-all
  • 无人零售柜:快捷舒适购物体验
  • Bash script进阶笔记
  • OpenCV图像处理——Python开发中OpenCV视频流的多线程处理方式
  • webGL开发智慧城市流程
  • Django讲课笔记02:Django环境搭建
  • 黑豹程序员-原生JS拖动div到任何地方-自定义布局
  • <软考高项备考>《论文专题 - 7 论文的项目背景之技术架构》
  • 6.3 C++11 原子操作与原子类型
  • 智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • BERT、GPT学习问题个人记录
  • HeartBeat监控Mysql状态