C语言经典练习题解析及示例

需积分: 9 2 下载量 158 浏览量 更新于2024-09-17 收藏 45KB DOC 举报
在C语言经典练习中,我们涵盖了多种基础和进阶概念。首先,让我们来看几个填空题: 1. 当a=2,b=4,c=3时,逻辑表达式"a>=b && b>c" 的值是 **0**,因为2不满足大于4的关系。而表达式"(c+=a)<b ? a : b" 先计算c(c=3+2=5),然后判断5是否小于4,由于不成立,所以返回b(即4),因此结果是 **4**。 2. 定义一个名为key的6元素整型数组,并初始化所有元素为1的语句是: ```c int key[6] = {1, 1, 1, 1, 1, 1}; ``` 3. 下面的程序执行后,变量x、y和z的值分别为5、10和它们相加的结果。因此,输出结果是 **5, 10, 15**。 4. 语句 `static int c[5] = {1, 3, 5, 7, 9}; int *p; p = &c[0];` 中,等价于 `p=c` 的语句是将指针p指向数组c的第一个元素。而 `* (p+1)` 的值,即数组下标为1的元素,是 **5**。 5. 在给定的静态数组inta中,通过循环 `for(k=0; k<8; k+=2)`,我们只累加偶数位置的元素。数组中满足条件的元素依次为-1, -5, 和 -9,因此 `s` 的最终值为 `-1 - 5 - 9 = -15`,但题目中给出的答案是 `-20`,可能是计算错误或题目本身有误。 接下来是选择题: 6. 选项中,正确给a数组元素输入数据的语句是(C)。C选项使用while循环并逐个递增索引i,确保不会越界,而其他选项要么没有指针指向,要么可能会超出数组范围。 7. 下面的程序使用while循环,每次迭代会使y递减直到0,然后退出循环,再进行自增。所以,输出是 `y=0`,答案是D。 8. C语言标准库函数 `fgets(string, n, fg)` 的功能是从文件fg中读取长度不超过n-1个字符的字符串到指针string指向的内存,所以正确答案是B。 9. 全局变量在源文件中定义时,其作用域取决于定义的位置。如果在函数外部定义,那么它在整个源文件范围内有效;如果在函数内部(但不在任何函数体中),则仅限于该函数。因此,答案是A(整个文件)和B(函数外部)。 这些题目涵盖了C语言的基础语法、逻辑运算、数组操作、指针理解、文件输入以及作用域规则等内容,适合用于C语言的学习和巩固实践。