C语言选择题

练习二级选择题,点击选项即可查看结果

第61题. 下面关于continuebreak说法正确的是()
正确选项:
解析:break:跳出本层循环或switch;continue:仅结束本次循环,直接进入下一轮迭代。continue不能用在switch。
第62题. #define M 2+3,表达式M*2宏替换之后结果为()
正确选项:
解析:宏是纯文本替换,M替换成2+3;M*2展开变成2+3*2。运算符优先级乘法优先,等价2 + (3*2)=8。想要(2+3)*2,宏定义要写#define M (2+3)。二级高频坑。
第63题. 执行 FILE *fp; fp=fopen("data.dat","rb");打开模式含义是()
正确选项:
解析:r读;w写;a追加;b代表二进制模式。rb二进制只读;wb二进制写;ab二进制追加。不带b为文本模式。
第64题. int a=12; printf("%o",a);输出格式是()
正确选项:
解析:%d十进制;%o八进制输出;%x十六进制小写;%X大写。12转八进制等于14。C语言printf没有直接输出二进制的格式符。
第65题. 若 int a=0;,下面表达式结果为真的是()
正确选项:
解析:C语言0代表逻辑假,非0为真。a等于0为假;!a逻辑非,!0等于1(真)。其余全部为假。
第66题. 下面哪一个是C语言合法字符常量()
正确选项:
解析:字符单引号,只能放一个字符或转义字符。'\n'换行转义字符合法。A单引号两个字符非法;B双引号是字符串;D反斜杠转义没有结束,语法错误。
第67题. 函数形参为int arr[],等价于下面哪一个()
正确选项:
解析:一维数组作为函数形参,编译器会直接退化成指针int *arr。方括号里面写任何数字都会被编译器忽略。
第68题. typedef int INTEGER;,下面描述正确的是()
正确选项:
解析:typedef给已存在类型起别名。INTEGER只是int别名,不是新类型;typedef编译阶段处理,不是预处理文本替换,和#define本质不同。
第69题. 执行 int a=1; while(a++<5);循环结束a的值()
正确选项:
解析:后置a++:先拿旧值比较,之后自增。当a=5,5<5条件不成立,但判断完条件后依然执行a++,a变成6,循环退出。
第70题. C语言中,表达式7/2.0结果类型是()
正确选项:
解析:整数与浮点数混合运算,发生隐式类型转换。2.0字面量默认double类型,最终结果为double类型。7/2(两个int)才得到整数3。