建站平台 绑定域名,合肥360seo排名,山东兽药网站建设,网站服务器试用前言#xff1a;
编程想要学的好#xff0c;刷题少不了#xff0c;我们不仅要多刷题#xff0c;还要刷好题#xff01;为此我开启了一个弯道超车必做好题锦集的系列#xff0c;每篇大约10题左右。此为第二篇选择题篇#xff0c;该系列会不定期更新#xff0c;后续还会…
前言
编程想要学的好刷题少不了我们不仅要多刷题还要刷好题为此我开启了一个弯道超车必做好题锦集的系列每篇大约10题左右。此为第二篇选择题篇该系列会不定期更新后续还会开编程题的系列。敬请期待 1、在上下文及头文件均正常的情况下下列代码的输出是 注 print 已经声明过 int main () { char str [] Geneius ; print ( str ); return 0 ; } print ( char * s ) { if ( * s ) { print ( s ); printf ( %c , * s ); } } A: suiene B: neius C: run-time error D: suieneG 答案解析 正确答案 A 代码实现了递归倒序打印字符串的功能但是 s 使得 s 的值发生了变化回不到 G 的位置上故而没有打印 G 2. 若有定义 int a[2][3]; 以下选项中对 a 数组元素正确引用的是 A: a[2][0] B: a[2][3] C: a[0][3] D: a[12][1] 答案解析 正确答案 D 本题主要考虑数组越界访问的情况二维数组的行和列都是从 0 开始的对于 a 数组来说行下标最大是 1 列下标最大是 2 D选项中 12 表达式的值是 0 是正确的其他选项行和列都可能存在越界 A 是行越界 B 是行和列都越界 C 是列越界。 3 、以下哪个选项可以正确描述 sizeof(double) A: 一个整型表达式 B: 一个双精度型表达式 C: 一个不合法的表达式 D: 一种函数调用 答案解析 正确答案 A sizeof是C 语言中的一个操作符不是函数调用简单的说其作用就是返回一个对象或者类型所占的内存字节数结果是无符号整数因此可以把它看作是整型表达式。所以选择A 4.二维数组X按行顺序存储其中每个元素占1个存储单元。若 X[4][4] 的存储地址为 Oxf8b82140 , X[9][9] 的存储地 址为 Oxf8b8221c ,则 X[7][7] 的存储地址为 A: Oxf8b821c4 B: Oxf8b821a6 C: Oxf8b82198 D: Oxf8b821c0 答案解析 正确答案 A 假设每行有 n个元素即X[4][4]只需要加上5就可以得到X[4][9]了而得到的位置和X[9][9]相差5行 那x[9][9] 元素的地址 - x[4][4] 元素的地址 0x21c-0x1405n5(21c 和 140 是地址末三位的十六进制 数) 这里 n 是 43 假设 x[7][7] 的地址是 z,x[7][7] 元素的地址 - x[4][4] 元素的地址 z-0x140 3n3 z 3n3140 3*4330x140 0x840x140 0x1c4看地址的尾数选择 A 5.求函数返回值传入 -1 则在 64 位机器上函数返回 int func ( int x ) { int count 0 ; while ( x ) { count ; x x ( x - 1 ); // 与运算 } return count ; } A: 死循环 B: 64 C: 32 D: 16 答案解析 正确答案 C xx(x-1)这个表达式执行一次就会将x的2进制中最右边的1 去掉在 x 变成 0 之前表达式能执行几次就去掉几个 1 所以这 个代码实现了求一个有符号整数二进制补码中1 的个数的功能我们知道 -1 的补码是全 1 而 int 类型 4 个字节 32 位选 C 6.读代码选结果 int count 0 ; int x - 1 ; while ( x ) { count ; x x 1 ; } printf ( %d , count ); A: 1 B: 2 C: 32 D: 死循环没结果 知识点补充 1. 左移 : 最左侧位不要了 , 最右侧补 0。 2. 右移 : 最右侧位不要了 , 最左侧补符号位 ( 正数补 0, 负数补1。 3. 无符号右移 : 最右侧位不要了 , 最左侧补 0.c语言没有java有 答案解析 正确答案 D 此题一个关键有符号数右移运算高位是补符号位的负数的符号位是 1 所以 x 永远不会变为 0 是个死循环 7.下述赋值语句错误的是 A: a (b (c 2 , d 3)) B: i C: a/b 2 D: a a a 1 答案解析 正确答案 C C 选项中 a/b 是表达式表达式计算的结果是一个值不能做左值 8.以下程序运行后的输出结果是) int main () { int a 1 , b 2 , m 0 , n 0 , k ; k ( n b a ) ( m a ); printf ( %d,%d\n , k , m ); return 0 ; } A: 0,0 B: 0,1 C: 1,0 D: 1,1 答案解析 正确答案 A k(nba)(ma); 这部分的执行顺序如下先执行 nba 部分其中关系运算符优先级高于赋值运算符所以先算 ba 得到0 n0 赋值运算的结果将作为括号内表达式的结果即 (nba)(ma) 转换成 (0)(ma)运算前表达式为假则后面的括号(ma)不运算m值还是0最后的结果是0即k0 9.下面函数的输出结果是 int main () { int k 1 ^ ( 1 31 31 ); printf ( %d\n , k ); } A: 0 B: -1 C: -2 D: 1 答案解析 正确答案 C (131); 左移 31 位并在右侧填充 0 得到 0x80000000 即符号位为 1 其他为 0 即 -2147483648 int k 1^(13131);注意这里在右移的时候符号位保持为 1 右移后填充 1 结果为 0xFFFFFFFF 即 -1 0x00000001^0xFFFFFFFF即 0xFFFFFFFE(-2) 10.如下代码的输出结果是 #include stdio.h int main () { int i 1 ; sizeof ( i ); printf ( %d\n , i ); return 0 ; } A: 1 B: 4 C: 2 D: 8 答案解析 正确答案 A 一般表达式的运算是在运行时执行的而 sizeof 是一个编译阶段就执行的运算符在其内的任何运算都不执行只推测出其中表达式结果的类型求其大小故前后i 的值不变。 以上为我个人的小分享如有问题欢迎讨论
都看到这了不如关注一下给个免费的赞