C语言选择题

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

第81题. 若定义 int a=3,b=0;,表达式a&&++b执行完毕后b的值是()
正确选项:
解析:&&逻辑与短路规则:左边a=3非0为真,必须计算右侧表达式。++b先自增,b由0变成1。如果左边表达式结果为假,右侧代码完全不会执行,b将保持0不变。
第82题. 若定义 int a=0,b=5;,表达式a&&(++b>0)运算结束后b的值为()
正确选项:
解析:&&逻辑与,左边a等于0,条件直接为假,发生短路,括号里面的++b完全不会执行。b的值维持原来5不变。短路是二级C语言高频坑点,不要以为括号内语句一定执行。
第83题. 下面关于 char str[] = "C"; 数组占用内存字节数是()
正确选项:
解析:C语言字符串字面量末尾自动隐藏'\0'字符串结束符。"C"实际保存字符'C'和'\0'两个char。sizeof(str)结果等于2;strlen(str)只统计有效字符得到1,二者要注意区分。
第84题. 执行 int x=5; x += x -= x*2;,x最终结果是()
正确选项:
解析:复合赋值运算符+=、‑=结合方向自右向左。第一步计算 x‑=x*2:x = 5‑5*2 = ‑5;第二步 x += x:x = ‑5 + (‑5) = ‑10。不要按照从左到右顺序计算,这是考试必考计算题。
第85题. 若 int num = 017;,num对应的十进制数值是()
正确选项:
解析:数字以0开头代表八进制常量。017八进制 = 1*8¹ +7*8⁰ = 8+7 =15。0x开头代表十六进制。八进制只能使用数字0‑7,出现8、9直接编译报错。
第86题. 下面关于malloc函数描述正确的是()
正确选项:
解析:A错误:malloc分配堆内存,不会自动释放;B正确;C错误:malloc内存里面是随机垃圾值,calloc才会清零;D错误,C语言使用free释放堆内存,delete是C++语法。使用完malloc必须配对free防止内存泄漏。
第87题. C语言中,关于 static修饰局部变量说法正确的是()
正确选项:
解析:static局部变量存储在静态存储区,仅第一次进入函数执行初始化;函数退出不会销毁,保留上一次值。作用域仍然仅限于本函数内部,外部不能访问。普通局部变量存栈,每次调用重新创建初始化。
第88题. 若 int a[5]={1,2};,数组元素a[3]的值是()
正确选项:
解析:数组部分初始化,提供的初始值依次赋值前面元素,剩下未显式初始化元素系统自动赋值0。a[0]=1,a[1]=2,a[2]=0,a[3]=0,a[4]=0。注意:只有初始化的数组才补0;函数内不初始化的局部数组才是随机值。
第89题. 表达式 7/2 + 7.0/2 的结果是()
正确选项:
解析:7/2两个整数做整数除法,直接舍弃小数得到3;7.0是double浮点数,7.0/2得到3.5;两者相加,整型3提升为double,3+3.5=6.5。整数除法和浮点数除法的区别是高频考点。
第90题. 执行 int i; for(i=1;i<4;i++); printf("%d",i);输出结果为()
正确选项:
解析:for后面紧跟分号,代表循环体是空语句。i取值1、2、3满足条件执行i++;i变成4时i<4条件不成立退出循环。此时i=4打印输出。多余分号是考试经典陷阱,很容易误选3。