C)嵌套调用,递归调用均可 D)不可以嵌套调用 9.以下叙述中正确的是 A
A) 构成C程序的基本单位是函数 B) 可以在一个函数中定义另一个函数 C) main()函数必须放在其它函数之前
D) 所有被调用的函数一定要在调用之前进行定义
10.用数组名作为函数调用时的实参时,传递给形参的是 A 。
A)数组首地址 B)数组第一个元素的值 C)数组全部元素的值 D)数组元素的个数
11.有一函数的定义如:void fun(char *s){……},则不正确的函数调用是( D )。 A.main()
{char a[20]=”abcdefgh”; fun(a); ?? } B.main()
{ char a[20]=”abcdefgh”; fun(&a[0]); ?? } C. main()
{ char a[20]=”abcdefgh”; char *p=a;fun(p); ?? } D. main()
{char a[20]=”abcdefgh”; fun(a[]); ?? }
13、函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是( D )。 A、funa(int *x, int *y) { int *p;
13
B、funb(int x , int y)
{ int t;
t=x; x=y; y=t; }
*p=*x ; *x=*y; *y=*p; }
C、func(int *x, int *y) { int *p;
p=x;x=y; y=p;
}
14. 有如下程序
int func(int a,int b) { return(a+b);} main()
{ int x=2,y=x,z=8,r;
r=func(func(x,y),func(y,z)); printf(“%d\\n”,r); } 该程序的输出的结果是 C
A) 12 B) 13 C) 14 D) 15 *15. 以下程序的输出结果是 B
int a, b; void fun()
{ a=100; b=200; } main()
{ int a=100, b=100;
fun();
printf(“%d%d \\n”, a,b); }
A) 100200
*16. 下列说法中正确的是:( A )
A. 局部变量在一定范围内有效,且可与该范围外的变量同名。
B. 如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,
局部变量不起作用。
C. 局部变量缺省情况下都是静态变量。
D. 函数体内的局部静态变量,在函数体外也有效。 17. 在C语言中,表示静态存储类别的关键字是: ( C )
A) auto
D、fund(int *x, int *y)
{ int t;
t=*x; *x=*y; *y=t; }
B) 100100 C) 200100 D) 200200
B) register C) static
14
D) extern
18.未指定存储类别的变量,其隐含的存储类别为( A )。 A)auto B)static C)extern D)register
七、结构体
1. 若有以下说明语句: struct student { int num; char name[ ]; float score; }stu;
则下面的叙述不正确的是: ( D )
A. struct是结构体类型的关键字
B. struct student 是用户定义的结构体类型 C. num, score都是结构体成员名 D. stu是用户定义的结构体类型名 2.若有以下说明语句: struct date { int year; int month; int day; }brithday;
则下面的叙述不正确的是__C___.
A) struct是声明结构体类型时用的关键字 B) struct date 是用户定义的结构体类型名 C) brithday是用户定义的结构体类型名 D) year,day 都是结构体成员名
*3. 已知:(设整型2字节,字符型1字节,浮点型4字节) struct { int i; char c; float a; }test;
则sizeof(test)的值是 D 。 A) 4 B) 5 C) 6 D) 7
4. 以下对结构变量stul中成员age的非法引用是 B struct student
15
{ int age; int num; }stu1,*p; p=&stu1;
A) stu1.age B) student.age C) p->age D) (*p).age
*5. 有如下定义
struct person{char name[9]; int age;};
struct person class[10]={“Tom”,17,“John”,19,
“Susan”,18,“Adam”,16,};
根据上述定义,能输出字母A的语句是( B ) A) printf(“%c\\n”,class[3].name); B) printf(“%c\\n”,class[3].name[0]); C) printf(“%c\\n”,class[3].name[1]); D) printf(“%c\\n”,class[2].name[3]);
6.存放100个学生的数据、包括学号、姓名、成绩。在如下的定义中,不正确的是( B )。
A.struct student
{int sno; char name[20];
float score;} stu[100]; B. struct student stu[100]
{int sno; char name[20]; float score}; C. struct { int sno; char name[20];
float score;} stu[100]; D. struct student
{int sno; char name[20]; float score;}; struct student stu[100];
16