备考计算机二级 C 语言 程序设计考试,选择题是不容忽视的重要部分。
今天为大家带来 10 道选择题,聚焦位运算与预处理命令的高级应用,助力提升综合能力。
1、设有定义:int a=64, b=8; 则表达式(a&b)||(a&&b)的值是( )
A. 0
B. 1
C. 64
D. 8
答案:B
分析:a&b按位与运算:64(二进制01000000)与 8(二进制00001000)结果为 0;a&&b逻辑与运算:因 a、b 均非 0,结果为 1;逻辑或运算0||1结果为 1,故 B 正确。
2、有以下程序
#include <stdio.h>
#define MAX(a,b) (a)>(b)?(a):(b)
main()
{
int x=1, y=2, z=3;
printf("%d\n", MAX(x+y, z)*2);
}
程序运行后的输出结果是( )
A. 3
B. 4
C. 5
D. 6
答案:D
分析:宏替换为(x+y)>(z)?(x+y):(z)*2,即3>3?3:3*2,条件不成立,取3*2=6,故 D 正确。
3、以下位运算中,能将变量 x 的第 3 位(从 0 开始计数)设置为 1 的表达式是( )
A. x | (1 << 3)
B. x & (1 << 3)
C. x ^ (1 << 3)
D. ~x | (1 << 3)
答案:A
分析:1<<3得到二进制1000(第 3 位为 1),按位或运算x | (1<<3)可强制将 x 的第 3 位设为 1(其他位不变);B 用于判断第 3 位是否为 1,C 用于翻转第 3 位,D 会改变其他位,故 A 正确。
4、有以下程序
#include <stdio.h>
#define N 3
#define M N+1
#define NUM 2*M+1
main()
{
printf("%d\n", NUM);
}
程序运行后的输出结果是( )
A. 7
B. 8
C. 9
D. 10
答案:A
分析:宏替换为NUM=2*N+1+1=2*3+1+1=7(宏仅文本替换,不自动加括号),故 A 正确。
5、若有定义:int a=5, b=3; 则表达式a ^ b的值是( )
A. 6
B. 7
C. 8
D. 9
答案:A
分析:5(0101)与 3(0011)按位异或(相同为 0,不同为 1),结果为0110(十进制 6),故 A 正确。
6、有以下程序
#include <stdio.h>
#define S(x) (x)*(x)
main()
{
int k=3;
printf("%d\n", S(k+1));
}
程序运行后的输出结果是( )
A. 16
B. 8
C. 4
D. 2
答案:A
分析:宏替换为(k+1)*(k+1)=4*4=16,故 A 正确。
7、以下程序的功能是将整数 x 的低 4 位翻转(0 变 1,1 变 0),高 4 位保持不变,正确的表达式是( )
A. x ^ 0x0f
B. x | 0x0f
C. x & 0x0f
D. ~x & 0x0f
答案:A
分析:0x0f为二进制00001111,按位异或x^0x0f可翻转低 4 位(高 4 位不变
8、有以下程序
#include <stdio.h>
#define PRINT(a) printf("%d,", a)
main()
{
int i, a[] = {1,2,3,4,5};
for(i=0; i<5; i++)
PRINT(a[i]);
}
程序运行后的输出结果是( )
A. 1,2,3,4,5,
B. 12345
C. 5,4,3,2,1,
D. 1 2 3 4 5
答案:A
分析:宏PRINT(a)替换为printf("%d,", a),循环依次输出数组元素并加逗号,结果为 “1,2,3,4,5,”,故 A 正确。
9、若有定义:int x=0x10; 则执行语句x >>= 2;后,x 的值是( )
A. 0x04
B. 0x20
C. 0x40
D. 0x08
答案:A
分析:0x10是十六进制(十进制 16),右移 2 位后为16 >> 2 = 4(十六进制0x04),故 A 正确。
10、以下关于#undef命令的叙述中,正确的是( )
A. #undef用于取消已定义的宏
B. #undef必须放在宏定义之前
C. #undef只能取消函数宏,不能取消对象宏
D. #undef取消宏定义后,该宏仍可在后续代码中使用
答案:A
分析:#undef的作用是取消已定义的宏(A 正确);应放在宏定义之后(B 错误);可取消任何宏(C 错误);取消后宏不可再用(D 错误)。
希望这 10 道题能帮助大家对计算机二级 C 语言的知识点有更深入的理解和掌握。如果想要获取完整版 PDF(含二级更多题目题库)

8108

被折叠的 条评论
为什么被折叠?



