C理论自测题及参考答案(第3次)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单选题
1.以下关于函数的叙述中,正确的是。
A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B.在函数体中至少必须有一个return语句
C.在函数体中可以定义另一个函数
D. 在函数体中可以调用函数自身
2. 以下关于变量的叙述中,不正确的是。
A.一个变量的作用域完全取决于该变量声明的位置
B.全局变量可以在函数以外的任何位置声明
C.动态局部变量的生存期仅限于本次函数调用,无法将局部变量的值保存到函数下一次调用
D.&
E.用static声明一个变量是为了限制其他编译单位引用该变量
3. 以下选项是一个自定义函数的头部,其中正确的是。
A. int fun(int a, b)
B. int fun(int a, int a)
C. int fun(int a[],int b)
D. int fun(static int a,int b)
4. 关于函数返回值,以下叙述中正确的是。
A. 函数返回值的类型由函数体内return语句包含的表达式类型决定
B.函数返回值的类型由函数头部定义的函数类型决定
C.若函数体中有多个return语句,则函数返回值是排列在最后的return语句中表达式的值D.若函数体内没有return语句,则函数没有返回值
5. 以下程序中main函数需要调用fun函数,所给选项中正确的调用语句是。
A. fun(1,2);
B. fun((1,2));
C. f();
D. fun(fun(1));
—
void fun (int c)
{ printf(“%d”,c ); }
6. 已知函数f定义如下:
void f(void)
{ printf(“ That’s great!”);}
则调用f函数的正确形式是。
A. f;
B. f();
C. f(void);
D. f(1);
7. 已知有函数f的定义如下:
int f(int a, int b)
{ if (a
]
在main函数中若调用函数f(2,3),得到的返回值是。
A. 2
B. 3
C. 2和3
D. 3和2
8. 在以下程序中,需要在fun函数中声明一个int型的变量,所给选项中不能用作该变量名的
是。
A. x
B. y D. fun
#include<>
int y;
main()
{ int a=1;
fun(a);
}
~
int fun(int x)
{ /* int 型变量声明位置*/
}
9.若有程序:
int x;
int f(int y)
{ return 标识符; }
#include<>
int w;
main()
&
{ int z=2; f(z); }
则在函数f中,return语句后允许出现的标识符是。
A. x或w
B. x或y
C. z或w
D. NULL
10. 在main函数体内部和外部均允许出现的实体是。
A. 预处理命令
B. 操作语句C.另一函数的定义D.函数形式参数声明
11.设有下列程序段:
static char b=2;
void Y ( )
{ static float d=4;....... }
int a=1;
】
void X ( )
{ int c=3; ...... }
关于程序段中各变量的属性,以下叙述中错误的是。
A. a是全局变量,函数X可以访问,函数Y不能访问
B. b是全局变量,函数X和函数Y都可以访问
C. c是动态局部变量,函数X可访问,函数Y不可访问
D. d是静态局部变量,函数X和函数Y都可以访问
12.对应main函数中的fun函数调用,以下给出的四个fun函数定义的首部中,错误的是。
main()
{ int a,n;
fun(n,&a);
[
}
A.void fun(int m,int x[]) B.void fun(int s,int h[41])
C.void fun(int p,int *s) D.void fun(int n,int a)
13. 下列全局变量声明中,正确的是。
A.auto int i=1; B. float a=1, b=, c=a+b;
C. char for=1;
D. static char ch;
14.若有数组A和B的声明“static char A[ ] = "ABCDEF",B[ ] = { 'A', 'B', 'C', 'D', 'E', 'F'} ;”,则数组A
和数组B的长度分别是。
A. 7,6
B. 6,7
C. 6,6
D. 7,7
15.以下程序运行后的输出结果是。
2 2 C. 7 5 2
"
#include<>
main()
{ char a[7]="a0\0a0\0"; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d",i,j);
}
16.假定已有声明“char a[30],*p=a;”,则下列语句中能将字符串"This is a C program."正确地保
存到数组a中的语句是。
A. a[30]="This is a C program.";
B. a="This is a C program.";
C. p= "This is a C program.";
D. strcpy(p,"This is a C program.");
17.以下数组声明中正确的是。
*
A. int n=10, a[n];
B. int a[];
C. int a[2][3]={{1},{2},{3}};
D. int a[][3]={{1},{2},{3}};
18.若有声明int a[10],b[3][3]; 则以下对数组元素赋值的操作中,不会出现越界访问的是。
A. a [-1]=0
B. a[10]=0
C. b[3][0]=0
D. b[0][3]=0
19.已有声明“int S[2][3]”,以下选项中正确地引用了数组S中的元素。
A. S[1>2][!1])
B. S[2][0]
C. S[1]
D. S
20. 已知函数fun的定义如下:
void fun(int x[],int y)
{ int k;
for(k=0;k ] x[k]+=y; } 若main函数中有声明int a[10]={10};及调用fun函数的语句,则正确的fun函数调用形式是。 A. fun(a[],a[0]); (a[0],a[0]); (&a[0],a[0]); D. fun(a[0],&a[0]); 21.以下单目运算符均只需要一个操作数,其中要求操作数类型必须是指针型的选项是。 A. & B. ++ C. ! D. * 22.已有声明“int a[5];”,以下表达式中不能正确取得数组元素a[1]地址的选项是。 A.&a[1] B.++a C.&a[0]+1 D.a+1 23.已知有声明:“int good=1;”, 若要使得表达式p="good"+good在编译时不出现语法错和警告,p应当声明为。 p; B. char *p; C. int p; D. int *p; { 24.下列程序段的输出结果是。 int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2)