【C程序设计】期末复习练习题及参考答案(3)
1. 在C语言中,`int (*p)[4]`的定义表示`p`是一个指向含有四个整型元素的一维数组的指针变量。这意味着`p`可以用来存储一个数组的首地址,该数组有四个整型元素。选项C正确。
2. 对于字符串定义的错误选项,`char str[7] = "FORTRAN";`会导致数组越界,因为"FORTRAN"有8个字符加上结束符'\0',需要8个空间,而定义的数组只有7个位置。因此,选项A是错误的。
3. 在给定的代码段中,`Swap`函数试图使用未初始化的指针`pTemp`进行交换操作,这会导致程序在运行时出错。因此,选项D正确,程序执行了危险的操作。
4. 结构体`struct student`中包含一个嵌套结构体来表示生日,正确的赋值方法应该是`s.birth.year = 1984; s.birth.month[0] = '1'; s.birth.month[1] = '1'; s.birth.day = 11;`,由于字符串需要以'\0'结束,所以需要手动添加月份中的'\0'。选项中没有提供完全正确的赋值方式,但可以根据上述方法理解如何正确赋值。
5. 要使输出为`1, 2, 34`,输入数据格式应为连续的字符和数字,不带逗号,选项C正确,即`'1','2',34`。
6. 合理的整型常量是`-80`,选项B正确。选项A前导零不能用于十进制负数,选项C和D不是整型常量的表示形式。
7. 表达式`x=(i=4,j=16,k=32)`中,`k=32`是最后的赋值操作,因此`x`的值为`16`,选项B正确。
8. 函数`func`接收一个整型指针和一个整型数组,修改了`b[0]`的值,所以`b[0]`的值变为`7`,选项B正确。
9. 当`grade`的值为'A'时,switch语句会执行到`case 'A':`,并跳过后续的`case 'B':`和`case 'C':`,直到遇到`break`语句或者`switch`语句块结束。因为没有`break`,所以会执行到`case 'D':`,最后打印`error!`。选项C正确。
10. `if((j++ || k++) && i++)`中,`j++`和`k++`都是真,`i++`会被忽略,因为逻辑运算符`||`的短路性质。因此,`i`、`j`和`k`的值在输出时分别为2、2和2,选项C正确。
11. for循环`for(i = 1; i < 10; i++);`会执行9次,因为`i`的值在最后一次迭代后会变成10,但循环体内部没有语句,所以不会有任何输出。循环结束后,`i`的值为10,选项A描述的`i`的值是9是错误的。
以上是针对题目中提供的C程序设计相关习题的解析和答案。这些知识点涵盖了指针、字符串、结构体、输入输出、常量、表达式计算以及控制流等C语言的基本概念。对于准备C程序设计考试的学生来说,理解和掌握这些知识点是至关重要的。