C语言测试试题与解析

需积分: 0 3 下载量 9 浏览量 更新于2024-07-30 收藏 107KB DOC 举报
"这是一份关于C语言的测试试题及答案,旨在帮助学习者巩固C语言的基础知识,包括程序结构、逻辑运算、字符串处理、数组、指针、函数调用以及循环控制等核心概念。" 1. C语言程序的执行起点: 一个C语言程序的执行总是从主函数`main()`开始。 2. 逻辑表达式求值: 表达式`x||y+z&&y-z`中,`||`操作符具有短路特性,如果`x`非零(即为真),整个表达式的值就是真,因此不考虑后面的`y+z&&y-z`。所以,如果`x=2`,则表达式值为真(1)。 3. 字符串结束标志: 在C语言中,字符串是以字符`\0`作为结束标志的。 4. 判断小写字母的表达式: 能正确表示“当ch为小写字母时为真,否则为假”的C语言表达式是`'a'<=ch&&ch<='z'`。 5. while与do-while循环的区别: do-while循环的循环体至少无条件执行一次,而while循环在执行前先检查条件,如果条件不满足则不执行循环体。 6. 字符串复制: 将`s1`的值复制到`s2`中,正确的C语言语句是`s2 = strcpy(s2, s1)`。注意,这里假设`s2`有足够的空间容纳`s1`的内容。 7. 数组作为函数参数: 当用数组名作为函数调用的实参时,传递给形参的是数组的首地址,即实际传递的是指针。 8. 指针与字符串: 语句`char s[]="world", *p;`定义了一个字符串`s`和一个指针`p`,执行`p=s`后,`*(p+5)`的值是`\0`,因为`p+5`指向了字符串末尾的结束符。 9. 函数指针声明: 语句`int(*p)()`声明了一个函数指针`p`,它指向一个返回整型值且没有参数的函数。 10. 全局变量的作用范围: 全局变量在整个源文件中都是可见的,其作用范围从定义位置开始直到文件结束。 二、程序分析: 1. 这段代码使用while循环和if-else结构,当i为偶数时,不打印并跳过下一次循环(continue语句)。因此,程序将打印1到10之间所有的奇数,结果为:`1 3 5 7 9`。 2. 此程序使用嵌套循环打印星号图案,形成一个倒置的金字塔。结果是: ``` * *** ***** ******* ``` 3. 程序计算3x3矩阵对角线元素之和,矩阵为: ``` 1 1 1 0 1 2 0 0 3 ``` 对角线元素和为1+1+3,程序将打印`5`。 4. 该程序有两个函数`main()`和`num()`,`num()`内的变量与`main()`内的变量同名但不共享值。在`num()`内部,`x`和`y`的值分别为15和5,但不会影响`main()`中的`x`和`y`。因此,`main()`的输出为`5,11`。 5. 这个程序首先定义了一个数组`a`,然后定义了一个指针`p`指向数组的第一个元素。第一次`printf`打印数组第一个元素`1`和第三个元素`5`,第二次`printf`打印数组第四个元素`9`和原指针`p`所指元素`1`,但`p`之后自增,变为指向数组第二个元素`3`。因此,输出为: ``` 1,5 9,3 ```