C语言试题集:复习与自我测试

需积分: 50 3 下载量 185 浏览量 更新于2024-09-09 1 收藏 74KB DOC 举报
"C语言试题02,包含基础选择题,适合C语言学习者的复习与自我测试。" 本文将详细解析这些C语言试题,帮助读者理解C语言的关键概念。 1. 正确的输入格式是关键。选项D指出,输入数据时必须指明变量地址,这是正确的。例如,`scanf("%f", &f)` 中的 `&` 表示取变量 `f` 的地址。其他选项A、B和C都是错误的输入方式,A选项中实型常量不应作为输入项,B选项没有提供变量接收输入,C选项的小数点后的位数规定不适用于`scanf`。 2. 表达式 `a<b? a : c<d? a : d` 是条件运算符(三元运算符)的使用,其语法结构是 `条件 ? 结果1 : 结果2`。当条件 `a<b` 成立时,表达式返回 `a` 的值,否则返回 `c<d? a : d` 的结果。由于 `a` 小于 `b`,表达式首先返回 `a` 的值,即 `1`。 3. `scanf` 函数用于从标准输入读取数据。题目中 `scanf("i=%d, f=%f", &i, &f)` 需要用户按照指定格式输入。正确输入是 `i=100, f=765.12`,因为 `i` 和 `f` 前面的关键词 `i=` 和 `f=` 必须匹配。 4. 在C语言中,合法的长整型常数以 `L` 或 `l` 结尾。因此,选项A `0L` 是正确的长整型常数,而其他选项B、C和D都不是。 5. C语言程序的执行从主函数(`main()`)开始,所以选项B是正确的。 6. C语言中的函数可以嵌套调用,也可以递归调用,但不能嵌套定义。所以,选项A是正确的。 7. 当 `void` 作为函数的参数时,意味着该函数不接受任何参数,选项A表示函数无返回值,这通常用于函数声明的返回类型,而不是参数列表。 8. 使用数组名作为函数参数时,实际传递的是数组的首地址,因此选项D是正确的。 9. 二进制位操作中,`^` 表示异或,`<<` 表示左移。`c=a^b<<2` 的计算过程是:先进行异或操作,然后左移两位。给定 `a=3 (00000011)`,`b=6 (00000110)`,异或得到 `1 (00000101)`,再左移两位得到 `00011000`,所以选项A是正确的。 10. 表达式 `a=4, b=3, a+b+2, a=a+1, a+b+2` 按照逗号运算符的规则从左到右依次计算,但最后返回的是整个表达式的值,也就是最后一个子表达式的值。这里最后的 `a+b+2` 计算时 `a` 已经变为 `5`,所以结果是 `12`,选项C正确。 11. 浮点数运算中,`1/2` 会被当作整数处理,结果为 `0`。因此 `1/2 * (a+b+c)` 等于 `0 * (3.0 + 4.0 + 5.0)`,结果是 `0.0`,选项B正确。 12. 结构体定义了一个名为 `st` 的类型,包含两个整型成员 `x` 和 `y`。这里的 `struct st stru` 定义了一个名为 `stru` 的结构体变量,但具体内容未给出。 通过解答这些题目,我们可以回顾C语言的基础知识,包括输入输出、变量、运算符、函数调用、位操作、数组、结构体等概念。这些是C语言学习者巩固基础知识和提高编程能力的重要练习。