C语言选择题

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

第131题. 执行 char str[]="abcd";str[4]里面存放内容是()
正确选项:
解析:"abcd"字符串存入数组,会自动追加字符串结束符'\0'。数组下标0:a、1:b、2:c、3:d、4:'\0'。str[4]就是结束标记,strlen遇到该字符停止计数。
第132题. C语言中,对于switch语句叙述正确的是()
正确选项:
解析:switch括号和case标签只允许整型、字符型常量,不能是浮点数、字符串。没有break会发生case穿透,顺序执行后面case。default位置任意,不是必须放在开头。
第133题. 若 int x=6,y=3;,表达式x ^ y结果为()
正确选项:
解析:^按位异或,二进制位相同为0,不同为1。6二进制110,3二进制011;110 ^ 011 =101,十进制等于5。异或经常用于简单加密、交换变量。
第134题. 下面哪一个函数用来释放malloc申请的堆内存()
正确选项:
解析:C语言堆内存malloc/calloc/realloc申请,配套free释放。delete、release不是C标准库函数;delete属于C++。忘记free造成内存泄漏;重复free同一个指针程序崩溃。
第135题. 执行 int i=0; while(++i<4){}循环一共循环多少次()
正确选项:
解析:++i是前置自增,先自增再比较。i=1<4、i=2<4、i=3<4,三次循环;i=4条件不成立退出。一共循环3次。区分前置++i和后置i++,考试高频坑。
第136题. 下面关于strcpy函数说法正确的是()
正确选项:
解析:strcpy把源字符串全部字符连同结束符'\0'复制到目标。不会检查目标数组空间,容易缓冲区溢出。返回目标字符串首地址。strncpy才支持限制拷贝字符数量。
第137题. 若定义 short s=0xffff;,当做有符号数打印printf("%d",s);输出结果()
正确选项:
解析:short两字节,0xffff作为有符号short补码代表‑1。赋值给int的时候符号位扩展。如果是unsigned short输出才是65535,区分有符号和无符号补码表示。
第138题. C语言表达式中,逻辑运算符优先级从高到低顺序正确的是()
正确选项:
解析:逻辑非!优先级最高,其次逻辑与&&,逻辑或||优先级最低。写复杂逻辑表达式建议多加括号,不要完全依赖记忆优先级防止出错。
第139题. 执行 int a[2][3]={{1,2},{3,4}};,a[1][2]的值是()
正确选项:
解析:二维数组部分初始化,已经给出的元素赋值,未初始化元素自动置0。第一行1,2,0;第二行3,4,0。a[1][2]属于未显式初始化,值等于0。
第140题. 下面关于gets函数说法错误的是()
正确选项:
解析:gets没有参数限制读取长度,用户输入超长直接缓冲区溢出,存在严重安全漏洞,C11标准正式删除gets。推荐使用fgets替代读取一行字符串。