文档库 最新最全的文档下载
当前位置:文档库 › C语言第章基本概念练习题ans

C语言第章基本概念练习题ans

C语言第章基本概念练习题ans
C语言第章基本概念练习题ans

C语言第章基本概念练

习题a n s

Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

第一单元(1-5章)基本概念练习题

一、单选选择(直接在正确的选项上打勾,每题)

1、下面关于C语言特点的描述,不正确的是( )。D

A、C语言兼有高级语言和低级语言的双重特点,执行效率高

B、C语言既可以用来编写应用程序,又可以用来编写系统软件

C、C语言是一种结构式模块化程序设计语言

D、C语言的可移植性较差

2、C语言规定,在一个源程序中,main函数的位置( )。B

A、必须在最开始

B、可以任意

C、必须在最后

D、必须在系统调用的库函数的后面

3、下列说法中正确的是( )。C

A、C程序书写时,不区分大小写字母

B、C程序书写时,一行只能写一个语句

C、C程序书写时,一个语句可分成几行书写

D、C程序书写时每行必须有行号

4、C语言编译程序的首要工作是( )。A

A、检查C语言程序的语法错误

B、检查C语言程序的逻辑错误

C、检查程序的完整性

D、生成目标文件

5、C语言程序经过连接以后生成的文件名的后缀为( )。C

A、 .c

B、 .obj

C、 .exe

D、 .cpp

6、以下关于算法的说法中,错误的是( )。 D

A、一个算法应包含有限个步骤

B、在计算机上实现的算法是用来处理数据对象的

C、算法的目的是为了求解

D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现

7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。 C

A、确定性

B、有穷性

C、零个或多个输出

D、零个或多个输入

8、以下不属于结构化程序设计三种基本结构之一的是( )。B

A、顺序

B、递归

C、循环

D、选择

9、下列数据中,不合法的C语言实型数据是( )。C

A、0.123

B、123e3

C、2.1e3.5

D、789.0

10、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。

A、a==1

B、++i;

C、a=a++=5;

D、

a=int(i);

11、已有定义int a=6; 则执行语句a+=a-=a*a;后,a的值为( )。D

A、36

B、0

C、-24

D、-60

12、若有以下程序段,其输出结果是( )。B

int a = 0, b = 0, c = 0;

c = ( a -= a - 5), (a -= 3,++b);

printf(“%d,%d,%d\n”,a, b, c);

A、0,0,-10

B、2,1,5

C、-10,-3,-10

D、3,3,-10

13、有以下定义:int i = 10, j = 1; 执行语句printf("%d,%d\n",i--, ++j); 后输出结果是( )。B

A、9,2

B、10,2

C、9,1

D、10,1

14、字符串"\t\"\065\xff\n"的长度为( )。A

A、5

B、14

C、8

D、输出项不合法,无正常输出

15、已有定义:char c;执行赋值语句c=('z'-'a')/2+'A';后,变量c的值为( )。A

A、M

B、N

C、O

D、Q

16、以下4个选项中,不能看做一条语句的是( )。D

A、;

B、a=5,b=2.5,c=3.6;

C、if(a<5);

D、if(b!=5)x=2;y=6;

17、设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是( )。D

A、a&&b

B、a<=b

C、a||b+c&&b-c

D、!((a

18、若有定义语句int a, b;double x;则下列选项中没有错误的是( )。C

A、switch(x%2)

B、switch((int)x/2.0)

{ case 0: a++; break; { case 0: a++; break;

case 1: b++; break; case 1: b++; break;

default : a++; b++; default : a++; b++;

} }

C、switch((int)x%2)

D、switch((int)(x)%2)

{ case 0: a++; break; { case 0.0: a++; break;

case 1: b++; break; case 1.0: b++; break;

default : a++; b++; default : a++; b++;

} }

19、以下程序段的输出结果是( )。D

main()

{ int x,y,z;

x = 0; y = 2; z = 3;

switch(x)

{ case 0: switch( y == 2)

{ case 1: printf("*"); break;

case 2: printf("%"); break;

}

case 1: switch( z )

{ case 1: printf("$");

case 2: printf("*"); break;

default : printf("#");

}

}

}

A、*

B、%

C、$*

D、*#

20、以下程序的输出结果是( )。C

main()

{ int a=45,b=40,c=50,d;

d=a>=30?b:c;

switch(d)

{ case 30 : printf("%d",a);

case 40 : printf("%d",b);

case 50 : printf("%d",c);break;

default : printf("#");

}

A、304050#

B、304050

C、4050

D、#

21、以下程序的输出结果是( )。B

main()

{ int a, b, c, x=35;

a =

b =

c = 0; x = 35;

if(!a)

x--;

else if(b) ;

if(c)

x = 3;

else

x = 4;

printf("%d\n",x);

}

A、35

B、4

C、3

D、34

22、当c的值不为0时,能正确将c的值赋给变量a和b的选项是( )。C

A、 c=b=a

B、 (a=c)||(b=c)

C、 (a=c)&&(b=c)

D、 a=c=b

23、若变量已定义为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是( )。B

A、 10<回车>22<回车>33<回车>

B、 10.0,22.0,33.0<回车>

C、 10.0<空格>22.0 <空格>33.0<回车>

D、 10 2233<回车>

24、下面程序段的输出结果是( )。A

int x=1,y=10;

if( x=y ) printf("AAA");

else printf("BBB");

A、 AAA

B、 BBB

C、 AAABBB

D、不确

25、下面程序段的输出结果是( )。A

for (x=9 ;x>0;x--)

if (x%3!=0)

{ printf("%d",--x);

continue;

}

A、 741

B、 852

C、 963

D、 875421

26、对以下循环:for(a=0,b=0;(b!=123)&&(a<=4);a++);说法正确的是( )。D

A、无限循环

B、循环次数不定

C、执行4次

D、执行5次

27、在下列程序中,while循环的循环次数是( ) 。D

main( )

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(i==5) break;

i++;

......

}

A、1

B、10

C、6

D、死循环、不能确定次数

28、以下程序的输出结果是( )。B

main()

{ int i=0,a=0;

while(i<20)

{ for(;;)

{ if((i%10)= =0)

break;

else i--;

}

i+=11;

a+=i;

}

printf("%d\n",a);

}

A、21

B、32

C、33

D、11

29、当输入为"quert?"时,下面程序的执行结果是( )。C

main()

{ while(putchar(getchar())!='?'); }

A、quert

B、Rvfsu

C、quert?

D、rvfsu?

30、以下能正确计算1×2×3×…×10的程序段是( )。

A、do{i=1;s=1; s=s*i; i++; }while(i<=10);

B、do{i=1;s=0; s=s*i; i++; }while(i<=10);

C、i=1;s=1;do{s=s*i; i++; }while(i<=10);

D、i=1;s=0;do{s=s*i; i++; }while(i<=10);

二、绘制NS算法流程图

(1)输入10个数,求其中的最大值。 (2) 输入2个数,求它们的最大公约数。

第6章-数组基本概念练习题

1、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

A、float

B、int

C、double

D、任何类型

答案:B

2、以下对一维整型数组a的正确定义是( )。

A、int a(10);

B、int n=10,a[n];

C、int n; scanf(“%d”,&n); int a[n];

D、#define SIZE 10

int a[SIZE];

答案:D

3、以下能对一维数组a进行正确初始化的语句是( )。

A、int a[10]=(0,0,0,0,0);

B、int a[10]={ };

C、int a[]={0};

D、int a[10]= "abcdefg";

答案:C

4、不能给数组的首元素赋值的语句是( )。

A、int a[2]={1};

B、int a[2]={1*2};

C、int a[2];scanf (“%d”,a);

D、int

a[2];a[1]=1;

答案:D

5、下面程序的运行结果是( )。

main()

{ int a[6],i;

for(i=1;i<6;i++)

{ a[i]=9*(i-2+4*(i>3))%5; printf("%2d",a[i]); }

}

A、-4 0 4 0 4

B、-4 0 4 0 3

C、-4 0 4 4 3

D、-4 0 4 4 0 答案:C

6、下列定义正确的是( )。

A、int a[4]={1,2,3,4,5};

B、int b[]={2,5};

C、int a(10);

D、int 4e[4]; 答案:B

7、若有说明int a[][4]={0,0};则下列叙述不正确的是( )。

A、数组a的每个元素都可以得到初值0。

B、二维数组a的第一维的大小为1。

C、数组a的行数为1,但是有4个元素。

D、只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值

答案:D

8、设有char str[10];下列语句正确的是( )。

A、scanf("%s",&str);

B、printf("%c",str);

C、printf("%s",str[0]);

D、printf("%s",str); 答案:D

9、下列说法正确的是( )。

A、在C语言中,可以定义元素个数可变的数组。

B、在C语言中,数组元素的个数可以不确定,允许随机变动。

C、在C语言中,数组元素的数据类型可以不一致。

D、在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数。

答案:D

10、假设array是一个有10个元素的整型数组,则下列写法中正确的是( )。

A、array[0]=10;

B、array=0;

C、array[10]=0;

D、array[-1]=0;

答案:A

11、分析下列程序运行后,输出的结果是( )。

main()

{ int n[3],i,j,k;

for(i=0;i<3;i++)

n[i]=0;

k=2;

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

A、2

B、1

C、0

D、3

答案:D

12、若有以下定义:

int a[5]={ 5, 4, 3, 2, 1 } ;

char b= ‘a’, c, d, e;

则下面表达式中数值为2的是( )。

A、a [3]

B、a [e–c]

C、a [d-b]

D、a [e-b] 答案:A

13、下面几个字符串处理表达式中能用来把字符串str2连接到字符串str1后的一个是( )。

A、strcat(str1,str2);

B、strcat(str2,str1);

C、strcpy(str1,str2);

D、

strcmp(str1,str2);

答案:A

14、设有两字符串“Beijing”、“China”分别存放在字符数组str1[20],str2[20]中,下面语句中能把“China”连接到“Beijing”之后的为( )。

A、strcpy(str1,str2);

B、strcpy(str1, “China”);

C、strcat(str1,“China”);

D、strcat(“Beijing”,str2);

答案:C

15、若有如下定义:,则下列语句的输出结果是( )。

int a[3][3]={1,2,3,4,5,6,7,8,9},i ;

for (i=0;i<=2;i++) printf(“%d”,a[i][2-i]);

A、3 5 7

B、3 6 9

C、1 5 9

D、1 4 7 答案:A

16、下列字符串赋值语句中,不能正确把字符串C program赋给数组的语句是( )。

A、char a[]={‘C’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};

B、char a[10]; strcpy(a, “C program”);

C、char a[10]; a= “C program”;

D、char a[10]={ “C program”};

答案:C

17、以下不能对二维数组a 进行正确初始化的语句是( )。

A、int a[2] [3] = {0};

B、int a[ ] [3]={{1,2},{0}};

C、int a[2][3]={{1,2},{3,4},{5,6}};

D、int a[ ][3]={1,2,3,4,5,6};

答案:C

18、下面程序段的运行结果是( )。

char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};

printf(“%s”,c); }

A、‘a’‘b’

B、ab\0c\0

C、ab c

D、ab

答案:D

19、判断字符串a和b是否相等,应当使用( )。

A、if (a= =b)

B、if (a=b)

C、if (strcpy(a,b))

D、if(strcmp(a,b))

答案:D

20、有字符数组a[80]和b[80],则正确的输出语句是( )。

A、puts (a,b);

B、printf(“%s,%s”,a[],b[]);

C、putchar(a,b);

D、puts(a);puts(b);

答案:D

21、若有如下定义和语句,则输出结果是( )。

char s[12]= “a book!”;

printf(“%d”,strlen(s) );

A、12

B、8

C、7

D、6

答案:C

22、以下能对二维数组a进行正确说明和初始化的语句是( )。

A、int a( )(3)={ ( 1, 0, 1 ), ( 2, 4, 5 ) };

B、int a[2][]={ { 3, 2, 1 }, { 5, 6, 7 } };

C、int a[][3]={ { 3, 2, 1 }, { 5, 6, 7 } };

D、int a(2)( )={ ( 1, 0, 1 ), ( 2, 4, 5 ) }; 答案:C

23、若有说明:int a[3][4] = {0};则下面正确的叙述是( )。

A、只有元素a[0][0]可以得到初值0

B、此说明语句不正确;

C、数组a中每个元素均可得到初值0

D、数组a每个元素均可得到初值,但不一定为0

答案:C

第7章-函数基本概念练习题

1.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数

是。A

A) 3 B) 4 C) 5 D) 有语法错

2.有如下程序,该程序的输出的结果是。

int runc(int a,int b)

{ return(a+b); }

main( )

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(“%\d\n”,r); }

A) 12 B) 13 C) 14 D) 15

3.有如下程序,该程序的输出结果是。

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2); }

main( )

{ printf(“%d\n”,fib(3)); }

A}2 B}4 C}6 D} 8

4.有以下程序,执行后输出的结果是。

void f(int x,int y)

{ int t;

if(x

main()

{ int a=4,b=3,c=5;

f(a,b); f(a,c); f(b,c);

printf("%d,%d,%d\n",a,b,c); }

A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5

5.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。在下划线处应填入的是。#define N 10

void arrin(int x[N])

{ int i=0;

while(i

scanf("%d",_________); }

A) x+i B) &x[i+1] C) x+(i++) D) &x[++i]

6.有以下程序,执行后输出结果是。

main()

{ char s[]="\n123\\";

printf("%d,%d\n",strlen(s),sizeof(s)); }

A) 赋初值的字符串有错 B) 6,7 C) 5,6 D) 6,6

7.以下叙述中正确的是。

A) 全局变量的作用域一定比局部变量的作用域范围大

B) 静态(static)类别变量的生存期贯穿于整个程序的运行期间

C) 函数的形参都属于全局变量

D) 未在定义语句中赋初值的auto变量和static变量的初值都是随机值

8.以下程序执行后输出的结果是。

main()

{ int a=4,b=3,c=5,d,e,f;

d=f1(a,b); d=f1(d,c);

e=f2(a,b); e=f2(e,c);

f=a+b+c-d-e;

printf("%d,%d,%d\n",d,f,e); }

f1(int x, int y)

{ int z; z=(x>y)?x:y; return(z); }

f2(int x, int y)

{ int z; z=(x

A) 3,4,5 B) 5,3,4 C) 5,4,3 D)3,5,4

9.以下程序的输出结果是。

int f(void)

{ static int i = 0;

int s =1;

s += i;

i++;

return (s); }

main()

{ int i, a = 0;

for (i=0; i<5; i++) a += f();

printf(“%d\n”, a); }

A) 1 B) 0 C) 非0的数 D) –1

10.以下C语言中,对函数不正确的描述是。

A) 当用数组名作形参时,形参数组改变可使实参数组随之改变

B) 允许函数递归调用

C) 函数形参的作用范围只是局限于所定义的函数内

D) 函数说明必须在主调函数之前

11.以下所列的各函数首部中,正确的是。

A) void play(var :Integer,var b:Integer) B) void play(int a,b)

C) void play(int a,int b) D) Sub play(a as integer,b as integer)

12.以下叙述中不正确的是。

A) 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B) 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。

C) 在C中,外部变量的隐含类别是自动存储类别。

D) 在C中,函数形参可以说明为register变量。

13.以下对C语言函数的有关描述中,正确的是。

A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B) C函数既可以嵌套定义又可以递归调用

C) 函数必须有返回值,否则不能使用函数

D) C程序中有调用关系的所有函数必须放在同一个源程序文件中

14.一个数据类型为void的函数中可以没有return语句,那么函数的被调用时。

A)没有返回值 B)返回一个系统默认值 C)返回值由用户临时决定 D)返回一个不确定的值

15.在下面的函数声明中,存在着语法错误的是。

A)BC(int a, int); B) BC(int,int); C)DC(int,int=5); D) BC(int x, int y);16.以下函数值的类型是。

fun ( float x )

{ float y;

y= 3*x-4;

return y;

}

A) int B)不确定 C) void D) float

17. 下面程序的输出结果是:。

int m=13;

int fun( int x, int y)

{ int m=3;

return( x*y-m); }

main( )

{ int a=7,b=5;

printf(“%d\n”, fun(a,b)/m); }

A)1 B)2 C)7 D)10

18.若有说明语句:static int a[3][4]={0}; 则下面叙述正确的是。

A)只有a[0][0]元素可得到初值0;B)数组a中每个元素均可得到初值0。

C)数组a中各元素都可得到初值,但值不一定为0;D)此说明语句不正确

19. 以下不正确的说法为。

A)在不同函数中可以使用相同名字的变量。

B)形式参数是局部变量。

C)在函数内定义的变量只在本函数范围内有效。

D)在函数内的复合语句中定义的变量在本函数范围内有效。

20. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为。

A)自动(auto)B)静态(static、C)外部(extern) D)寄存器(register)

21. 下面程序的输出结果是:。

int f( int a)

{ int b=0;

static int c=3;

b++; c++;

return (a+b+c); }

main( )

{ int a=2, i;

for(i=0;i<3;i++) printf(“%4d”,f(a) ); }

A)7 7 7 B)7 10 13 C)7 9 11

D)7 8 9

22. 若使用一维数组名作函数实参,则以下正确的说法是。

A)与其对应的被调用函数的形参可以为同类型的指针变量。

B)与其对应的被调用函数的形参必须为同类型的数组。

C)与其对应的被调用函数的形参必须明确给出数组的长度。

D)实参数组名与形参数组名必须一致。

23. 有如下程序, 该程序的输出的结果是。

int runc(int a,int b)

{ return(a+b); }

main( )

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(“%d\n”,r); }

A)12 B)13 C)14

D)15

24. 有如下程序, 该程序的输出结果是。

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2); }

main( )

{ printf(“%d\n”,fib(3)); }

A)2 B)4 C)6 D)8

25. 有以下程序,执行后输出的结果是。

void f(int x,int y)

{ int t;

if(x

}

main()

{ int a=4,b=3,c=5;

f(a,b); f(a,c); f(b,c);

printf("%d,%d,%d\n",a,b,c);

}

A)3,4,5 B)5,3,4 C)5,4,3 D)4,3,5 26. 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值,在下划线处应填入的。

#define N 10

void arrin(int x[N])

{ int i=0;

while(i

scanf("%d",_________); }

A)x+i B、)&x[i+1] C)x+(i++) D)&x[++i] 27. 以下叙述中正确的是。

A)全局变量的作用域可以扩展到所有文件。

B)静态(statiC)类别变量的生存期贯穿于整个程序的运行期间。

C)函数的形参都属于全局变量。

D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

int f()

{ static int i = 0; int s =1;

s += i;

i++;

return (s); }

main()

{ int i, a = 0;

for (i=0; i<5; i++) a += f();

printf(“%d\n”, a); }

A)1 B)0 C)15 D)–1

29. 有如下程序段,运行的结果为。

int f(int a,int b);

main( )

{ int i=2,p,k=1;

p=f(i,++k);

printf(“%d, %d”,k,p); }

int f(int a,int b)

{ int c;

if(a>b) c=1;

else if(a==b) c=0;

else c=-1;

return(c); }

A)1,0 B)2,0 C)2,-1 D)1,1

30. 以下函数值的类型是。

fun ( float x )

{ float y;

y= 3*x-4;

return y; }

A)int B)不确定C)void D)float

第8章指针基本概念练习题

1.有以下程序:编译时出现错误,以下叙述中正确的是。

main()

{ char a,b,c,*d;

a='\'; b='\xbc';c='\0xab'; d="\0127";

printf("%c%c%c%c\n",a,b,c,*d);

}

A)程序中只有a='\';语句不正确。B)b='\xbc';语句不正确。

C)d="\0127";语句不正确。D)a='\';和 c='\0xab';语句都不正确。

2.若有如下一些定义和语句,则下列四个选项中错误的语句是。

int a=4,b=3,*p,*q,*w;

p=&a; q=&b; w=q; q=NULL;

A) *q=0; B) w=p; C) *p=&a; D) *p=*w;

3. 对于基类型相同的两个指针变量之间,不能进行的运算是。

A)< B) = C) + D) –

main()

{ char *s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

A) n,two B) t,one C) w,one D) o,two

5.有以下程序,执行后输出结果是。

main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%d\n",s[2]);

}

A) 随机值 B) 0 C) 5 D) 6

6.有以下程序,执行后输出结果是。

main()

{ char str[]="xyz",*ps=str;

while(*ps) ps++;

for(ps--;ps-str>=0;ps--) puts(ps);

}

A) yz B) z C) z

D) x

xyz yz yz

xy

xyz xyz

7. 有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是。

A) *p+9 B) *(p+8) C) *p+=9 D) p+8

8. 有如下程序段,执行该程序段后,a的值为。

int *p,a=10,b=1;

p=&a; a=*p+b;

A) 12 B) 11 C) 10 D) 编译出错

9. 若有说明:int i, j , *p=&i ;则下面语句中与i =j;等价的语句是:。

A)*p=*&j ; B)i = *p C)i=&j ; D)i=**p

10. 若有如下语句: int *p1,*p2;则其中int所指的是。

A)p1的类型B)*p1和*p2的类型

C)p2的类型D)p1和p2所能指向变量的类型

11. 执行以下程序后,a的值为。

int *p, a = 10, b=1;

p = &a;

a = *p*b;

A) 12 B) 编译出错C) 10 D) 1

12. 已定义:int a[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是。

A) p+1 B) a+1 C) a++ D) ++p

13. 以下程序段的输出结果是。

char a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, *p = a+5;

printf(“%d”, *--p);

A) 非法B) a[4]的地址C) 3 D) 5

14. 若有以下定义和语句,则输出结果是。

int **pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);

A)10,20 B)10,10 C)20,10 D)20,20

15. 若有以下定义和语句,则输出结果为。

char *sp=”\t\b\\\0English\n”;

printf(“%d”,strlen(sp));

A)12 B)3 C)17 D)13

16. 以下程序输出的结果是。

main()

{ int a=5,*p1,**p2;

p1=&a,p2=&p1;

(*p1)++;

printf(“%d\n”,**p2);

}

A) 5 B) 4 C) 6 D) 不确定

17. 设有:void f1(int * m,long n);int a;long b;则以下函数调用合法的是。

A)f1(a,b); B)f1(&a,b); C)f1(a,&b); D)f1(&a,&b);

第9章-结构体基本概念练习题

1、设有如下定义,则对data中的a成员的正确引用是( )。

struct sk

{ int a; float b; } data,*p=&data;

A) (*p).data.a B)(*p).a C) p->data.a D) p.data.a 2、当定义一个结构体变量时,系统分配给它的内存容量是( )。

A)各成员所需内存量的总和B)结构中第一个成员所需内存量

C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量

3、以下程序运行后的输出结果是( )。

struct STU

{ char num[10]; float score[3]; };

main()

{ struct STU s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s;

int i;

float sum=0;

for (i=0;i<3;i++) sum=sum+p->score[i];

printf("%6.2f\n",sum);

}

A)260.00 B) 270.00 C)280.00 D)285.00

4、以下程序运行后的输出结果是( )。

struct STU

{ char num[10]; float score[3]; };

main()

{ struct STU s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}};

int i;float sum=0;

for (i=0;i<3;i++) sum=sum+s[i].score[i];

printf("%6.2f\n",sum);

}

A) 260.00 B) 270.00 C) 280.00 D) 285.00

5、若程序中有下面的说明和定义:

struct stt

{ int x;

char b;

}

struct stt a1,a2;

则会发生的情况是( ) 。

A)程序将顺利编译、连接、执行。B)编译出错。

C)能顺利通过编译、连接,但不能执行。D)能顺利通过编译,但连接出错。

6、设有如下说明语句,则以下叙述不正确的是( )。

struct stu

{ int a;

float b;

} stutype;

A)struct是结构体类型的关键字B)struct stu是用户定义的结构体类型

C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名

1-9章基本概念练习题参考答案

相关文档