C语言选择题

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

第31题. 下面选项,不属于C语言关键字的是()
正确选项:
解析:main只是约定俗成的程序入口函数名字,不属于C语言标准关键字。break跳出循环或者switch;continue结束本次循环;static修饰静态变量,三者都是C标准关键字。
第32题. int i; for(i=0;i<5;i++); printf("%d",i);程序输出结果是()
正确选项:
解析:for右括号之后紧跟分号,代表循环体为空语句,printf不属于循环内部代码。循环完成i自增到5,循环终止,打印输出5。for后面多余分号是二级考试高频陷阱。
第33题. char str[20]="NCRE"; char *p=str; printf("%c",*(p+2));输出字符为()
正确选项:
解析:字符串"NCRE"下标0字符N,下标1字符C,下标2字符R,下标3字符E。p指向字符串首地址,p+2向后偏移两个字符位置,*(p+2)取出下标2对应的字符R。
第34题. 全局变量存储在内存哪一个区域()
正确选项:
解析:全局变量以及static静态变量保存在静态全局存储区;普通局部变量保存在栈;malloc动态申请的内存来自堆;寄存器是CPU高速存储,用于寄存器变量。
第35题. int *p=(int *)malloc(sizeof(int)*5);下面说法错误的是()
正确选项:
解析:free只会释放堆上内存空间,指针p本身的值不会自动置NULL,释放之后p变成野指针,需要程序员手动写p=NULL;。malloc分配失败返回NULL;动态内存使用完毕必须free,防止内存泄漏。
第36题. int x=1,y=0; x && y++;执行完毕y的值是()
正确选项:
解析:&&逻辑与存在短路特性:只有左边表达式结果为真,才会运算右边表达式。x=1为真,执行y++,y由0自增变成1。如果左边为假,右边表达式直接不会执行。
第37题. int a=10; if(a>20) printf("A"); else if(a>5) printf("B"); else printf("C");输出结果是()
正确选项:
解析:a=10,a>20条件不成立;进入else if判断,a>5条件成立,打印B;后续else分支直接跳过。多分支if‑else if结构只会执行第一个条件成立的分支。
第38题. enum Color {RED,GREEN,BLUE};枚举常量GREEN的值是()
正确选项:
解析:枚举类型默认第一个常量数值为0,后面常量依次向上加1。RED=0,GREEN=1,BLUE=2;也可以手动赋值修改枚举常量的数值。
第39题. C语言中,关于union共用体描述正确的是()
正确选项:
解析:union共用体全部成员共享同一块内存;整体占用内存等于内部最大成员的大小;同一时间只能够保证一个成员数据有效;共用体同样遵循内存对齐规则。
第40题. 下列属于预处理指令的是()
正确选项:
解析:以#开头的是预处理指令,#include用于引入头文件。if、for、return都属于普通C语句,在编译阶段处理,不属于预处理。