第一题
1. 对于C/C++语言的函数,下列叙述中正确的是( )
A:函数的定义不能嵌套,但函数调用可以嵌套
B:函数的定义可以嵌套,但函数调用不能嵌套
C:函数的定义和调用都不能嵌套
D:函数的定义和调用都可以嵌套
答案及解析 A
函数调用可以嵌套,函数的定义不可以嵌套
因为函数的定义都是相互平行、相互独立的;所以标志C是不允许函数定义的嵌套的;
第二题(好题)
2. 下面程序的功能是从输入字符串中找出最长字符串,则下面程序哪行存在错误()
#include "stdio.h"
#include "string.h"
#define N 10
int main()
{
char s[N][81], * t; // line:1
int j; // line:2
for (j=0; j<N; j++) // line:3
gets (s[j]); // line:4
t= *s; // line:5
for (j=1; j<N; j++) // line:6
if (strlen(t)<strlen(s[j])) // line:7
t=&s[j]; // line:8
printf("strings is: %d, %s\n", strlen(t), t); // line:9
}
A:line:1
B:line:4
C:line:6
D:line:8
答案及解析 D
由于题目的数组太长了,为了讲解清晰和方便,采用下面的数组:
明确下面几点:
1. 二维数组是一维数组的数组;
2. 二维数组名是第一行的地址;
3. 每一行都相当于一个一维数组,所以s[] 相当于 行数组的数组名;
知道了这些之后,t存的是每一行的首元素地址,也就是说t存的就是每一行的字符串;
直接看第八行,&s[j]这是取第j行首元素地址的地址,是个二级指针,错了
第三题
3. putchar函数可以向终端输出一个( )
A:整型变量表达式值
B:实型变量值
C:字符串
D:字符或字符型变量值
答案及解析 D
getchar是提取一个字符;
putchar是输出一个字符,又因为每个字符都有对应的ASCII值,所以也可以是字符型的变量值
第四题(好题)
4. 设有以下定义:
1 2 |
|
则以下能够正确表示数组元素a[1][2]的表达式是()
A:* (( * prt+1)[2])
B:* ( * (p+5))
C:( * prt+1)+2
D:* ( * (a+1)+2)
答案及解析 D
这个题考查的就是你对二维数组,数组指针的了解
首先数组名代表的是第一行的地址
其次二维数组是一维数组的数组
a[0]、a[1]、a[2]、a[3]分别代表的是1到4行的地址
这个数组指针的数组元素是a[0]、a[1]、a[2];
知道这些之后,我们直接上图:
第五题(好题)
5. 若有语句:int s[3][3],(*p)[3];p=s;则对s数组元素的引用形式正确的是___
A:p+1
B;*(p+1)
C:p[1][2]
D:*(p+1)+2
答案及解析 C
这个跟上一题同理,大家可以自己画画图,我这里就不画了