C理论自测题及参考答案(第3次)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档