C语言专项复习题解析与解答

版权申诉
0 下载量 162 浏览量 更新于2024-07-21 收藏 3.88MB PDF 举报
"《C语言》四个专项总复习题,包含选择题,涉及指针、函数、数组等核心概念,并附有答案供学生自我检验学习效果。" 在C语言的学习中,指针、函数、数组以及字符串是核心知识点,这些在给定的复习题中都有所体现。 1. 指针:题目中提到了数组指针的使用,例如`int a[4][3]`和`*p=a[1]`,这涉及到多维数组和指针的交互。`*p`是取指针p所指向的值,`p+2`则是移动到数组的下一个元素,即第二个元素的地址。`**q`是解引用二级指针,用于访问指针q所指向的数组中的元素。选项C的`**(q+1)`实际上访问了数组a的第二个子数组的首个元素,即`a[1][0]`,而不是6。 2. 函数返回值:函数`int fun(float x, double y)`定义了一个返回整型值的函数,即使输入参数是浮点型和双精度型,返回值仍为整型,因此答案为C。 3. 函数参数传递:当用一维数组名作为函数参数时,实际传递的是数组首元素的地址。所以选项D正确,表示传递的是数组第一个元素的地址。 4. 函数定义:在C语言中,函数体内可以声明局部变量(A正确),可以递归调用自身(C正确),也可以不包含`return`语句,但此时函数默认返回`void`(D正确)。B选项错误,因为函数内部不能定义另一个函数,只能声明。 5. 函数调用:函数`f(int a[2], int *b)`接收一个整型数组和一个整型指针。A选项正确,因为`&y`和`&x`分别是y和x的地址;B选项正确,`t`和`t+1`分别代表数组t的首地址和第二个元素的地址;C选项错误,因为`y=f(&t[0],&x)`试图将函数的返回值赋给`y`,但函数`f`实际上没有返回值;D选项错误,因为`f(x,y)`尝试将非数组的x和y作为数组传递。 6. 计算字符串长度:函数`f(char *x)`的功能是计算x指向的字符串的长度,不包括结束符`\0`,因此返回的是`y-x-1`,答案是B。 7. 字符串操作:将字符串"world cup"保存在字符数组`s`中,正确的做法是声明足够大的数组并用`strcpy`或直接赋值。选项B错误,因为字符数组`s`需要有足够的空间来容纳整个字符串,包括结束符`\0`,而这里没有提供足够的初始零元素。 以上知识点涵盖了C语言的基础内容,对于准备C语言考试或者复习的学生来说是非常有价值的资料。