C语言选择题

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

第51题. char s1[]="abc",s2[]="ab"; strcmp(s1,s2);函数返回值描述正确的是()
正确选项:
解析:strcmp逐字符比较ASCII码,前两个字符相等,s1第三个字符'c',s2遇到'\0'。'c'大于'\0',返回正数。相等返回0,s1小于s2返回负数。不直接返回长度差。
第52题. 定义 int *fun();,该函数说明含义是()
正确选项:
解析:int *fun();fun是函数名字,()代表函数,返回值类型int*,也就是返回整型指针。int (*fun)()才是函数指针。括号优先级很关键。
第53题. 下面关于数组名描述错误的是()
正确选项:
解析:数组名是地址常量,不可以arr++、arr=xxx修改。只有指针变量才可以自增。数组传参时,形参本质等价指针。
第54题. int x=5,y; y=x++ * ++x;执行结束y的值()
正确选项:
解析:同一个变量在一个表达式内多次自增,中间没有序列点,C标准属于未定义行为。不同编译器运行结果不一样,考试看到这种表达式直接识别未定义。
第55题. 执行 enum {A,B=5,C};枚举常量C的值是()
正确选项:
解析:A默认0;B手动赋值5;后面常量在前一个基础上加1,C=B+1=6。
第56题. C语言中,全局变量未手动初始化,默认初值为()
正确选项:
解析:存放在静态存储区的全局、static局部变量,没有初始化默认全部置0。普通栈上局部变量不初始化是随机垃圾。
第57题. 下面运算符优先级最高的是()
正确选项:
解析:括号()优先级最高,强制改变运算顺序。优先级:括号>算术运算>关系运算>&& || >赋值运算符。赋值=优先级很低。
第58题. int a=2,b=3,c=1; if(a执行完c的值()
正确选项:
解析:else总是匹配离它最近还没有配对的if。a
第59题. C语言中,putchar('A');功能是()
正确选项:
解析:putchar输出一个字符;getchar读取一个字符。putchar('A')在屏幕打印大写字母A。
第60题. 若 int *p=malloc(sizeof(int));成功分配内存,下面说法正确的是()
正确选项:
解析:malloc分配堆内存**不会清零**,内容随机垃圾。A错;p指针变量本身在栈,指向的内存在堆,C错;动态内存必须free,D错。calloc分配内存会自动清零。