【C语言复习题4】
1. C语言在编译时会进行语法检查,因此选项A错误。选项B中,C语言的子程序主要是函数,并没有过程的概念,所以B也错误。选项C正确,C语言允许函数嵌套调用。选项D正确,C语言中的函数默认为外部函数,除非声明为静态(static)。
2. C语言常量的表示中,选项B错误,因为指数不能有小数点,1.2e0.5不是合法常量。选项A(0xFF)是十六进制整数常量,选项C(2L)是长整型常量,选项D('\72')是八进制字符常量,均合法。
3. C语言的关键字包括"char","int","default"等,但VAR、cher、integer不是C语言的关键字。所以选项B是错误的,选项D(default)是正确的。
4. 当a为3时,表达式`a+=a-=a*a`首先执行`a-=a*a`,即`a = a - a*a = 3 - 3*3 = -6`,然后执行`a+=`部分,即`a = a + (-6) = -12`,因此a的最终值为-12。
5. 变量x、y、t均为int型,执行`x=y=3;t=++x||++y;`后,先计算`++x`使x变为4,由于逻辑或运算符`||`,只要左侧表达式非零(这里4是非零),右侧就不会计算,因此y的值保持不变,仍为3。
6. 判断c为小写字母的正确表达式是`(c >= 'a') && (c <= 'z')`,因此选项D正确。
7. `scanf`函数用于输入,对于浮点数的输入,应避免使用逗号分隔,选项B和C不正确,因为它们在输入时使用了逗号。选项D不正确,因为它在两个数字之间没有空格。只有选项A的输入形式是正确的。
8. 给定程序输出结果是`2,1`。因为d/10%9的结果是2,a被赋值为2,然后`b=a&&(-1)`,在C语言中,任何非零值都被视为真,因此b被赋值为1。
9. 输入9时,`n++<10`的条件为假,因此执行`n--`,n变为8,输出8。
10. 函数调用`func((e1+e2),(e3+e4+e5));`含有2个实参,每个括号被视为一个参数,所以选项A正确。
11. for循环`for(i=0,k=-1;k=1;i++,k++)`中,`k=1`是一个赋值操作,而不是比较,因此循环会无限执行,选项D正确。
12. 程序执行后输出结果是6,因为当a达到10时,break跳出循环。
13. 数组x定义为`int x[10]={0,2,4}`,在内存中占20个字节,因为每个int类型变量占两个字节,即使只有三个元素初始化,其余未初始化的元素也会占据空间。
14. 程序输出结果是`741`,数组从下标0开始,a[2]对应7,a[5]对应4,a[8]对应1。
15. 表达式`a`等价于`a != 0`,因为在C语言中非零值被视为真,零值被视为假。
16. C语言中的数组大小是固定的,且所有元素的类型必须相同,选项C正确。
17. 不正确的int类型的常数是32768,因为int在某些系统中可能是16位,最大值为32767。
18. 程序输出`01`,因为`a++<0`为假,`b--<=0`为真,执行printf("%d%d\n", b, a)。
19. 运算对象必须是整型的运算符是`%`,它是求余运算符。
20. C语言源程序的基本单位是函数,选项B正确。
21. 程序输出结果是0,因为b=b/a相当于5/7,结果为浮点数,但printf默认整数输出,舍去小数部分。
22. 表达式`a+=a-=a*a`先执行`a-=a*a`,a变为-12,然后`a+=`部分,a最后为0。
23. 程序输出11,因为`011`在C中是八进制数,转换为十进制是9,输出9。
以上是C语言复习题的部分解析,涵盖了变量、数据类型、常量、运算符、流程控制、函数等多个知识点。