文档库 最新最全的文档下载
当前位置:文档库 › C语言概述练习题(多套)

C语言概述练习题(多套)

C语言概述练习题(多套)
C语言概述练习题(多套)

C语言概述练习题

1.一个C程序的执行是从( )

A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

2.以下叙述正确的是:( )

A.在C程序中,main函数必须位于程序的最前面

B.程序的每行中只能写一条语句

C.C语言本身没有输入输出语句

D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误

3.以下叙述不正确的是:( )

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

4.C语言规定:在一个源程序中,main的位置( )

A.必须在最开始

B.必须在系统调用的库函数后面

C.可以任意

D.必须在最后

5.一个C语言程序是由( )

A.一个主程序和若干子程序组成

B.函数组成

C.若干过程组成

D.若干子程序组成

6.C源程序的基本单位是____________

7.一个C源程序中至少包括一个____________

8.在一个C源程序中,注释部分两侧的分界符分别为____________ 和____________

9.在C语言中,输入操作是由库函数____________ 完成的,输出操作是由库函数____________ 完成的

运算符与表达式练习题

1.若x,i,j和k都是int型变量,则计算下面表达式后,x 的值为( ) x=(i=4,j=16,k=32)

A.4

B.16

C.32

D.52

2.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )

A.7

B.8

C.6

D.2

3.下面四个选项中,均是不合法的用户标识符的选项的是:( )

A.A p_o do

B.float lao _A

C.b-a goto int

D._123 temp INT

4.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )

A.必须为字母

B.必须为下划线

C.必须为字母或下划线

D.可以是字母、数字和下划线中的任意一种

5.下面四个选项中均是不合法整型常量的选项是( )

A.160 -0xffff 011

B.-0xcdf 01a 0xe

C.-01 986,012 0668

D.-0x48a 2e5 0x

6.下面四个选项中均是不合法整型常量的选项是( )

A.-0f1 -0xffff 0011

B.-0xcdf 017 12,456

C.-018 999 5e2

D.-0x48eg -068 03f

7.下面四个选项中,均是不合法的浮点数的选项是( ) A.160 0.12 e3

B.123 2e4.2 e5

C.-18 123e4 0.0

D.-e3 234 1e3

8.下面四个选项中,均是合法的浮点数的选项是( )

A.+1e+1 5e-9.4 03e2

B.-60 12e-4 -8e5

C.123e 1.2e-4 -8e5

D.-e3 8e-4 5.e-0

9.下面四个选项中,均是合法转义字符的选项是( )

A.'\" ‘\\' ‘\n'

B.‘\' ‘\017' ‘\"'

C.'\018' ‘\f' ‘xab'

D.'\\0' ‘\101' ‘x1f'

10.下面四个选项中,均是不合法的转义字符的选项是( )

A.'\"' ‘\\' ‘\xf'

B.'\1011' ‘\' ‘\a'

C.'\011' ‘f'‘\}'

D.'\abc' ‘\101' ‘x1f'

11.下面正确的字符常量是( )

A.‘c"

B.'\\"

C.'w'

D."

12.下面四个选项中,均是正确的数值常量或字符常量的选项的是( )

A.0.0 0f 8.9e ‘&'

B."a" 3.9E-2.5 1e1 ‘\"'

C.'3' 011 0xFF00 0a

D.+001 0xabcd 2e2 50

13.下面不正确的字符串常量是( )

A.'abc'

B."12'12"

C."0"

D." “

14.若有代数式3ae/bc,则不正确的C语言表达式是( )

A.a/b/c*e*3

B.3*a*e/b/c

C.3*a*e/b*c

D.a*e/c/b*3

15.已知各变量的类型说明如下:int k,a,b; unsigned long w=5; double x=1.42;则以下不符合C语言语法的表达式是( )

A.x%(-3)

B.w+=-2

C.k=(a=2,b=3,a+b)

D.a+=a-=(b=4)*(a=3)

16.已知各变量的类型说明如下:int i=8,k,a,b; unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是( )

A.a+=a-=(b=4)*(a=3)

B.a=a*3=2

C.x%(-3)

D.y=float(i)

17.以下不正确的叙述是( )

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

18.以下正确的叙述是( )

A.在C程序中,每行中只能写一条语句

B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C.在C语程序中,无论是整数还是实数,都能被准确无误地表示

D.在C程序中,%是只能用于整数运算的运算符

19.以下符合C语言语法的赋值表达式是( )

A.d=9+e+f=d+9

B.d=9+e,f=d+9

C.d=9+e,e++,d+9

D.d=9+e++=d+7

20.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为( )

A.D

B.68

C.不确定的值

D.C

21.在C语言中,要求运算数必须是整型的运算符是( )

A./

B.++

C.!=

D.%

22.若以下变量均是整型,且num=sum=7;则计算表达式SUM=num++,SUM++,++num后sum值为( )

A.7

B.8

C.9

D.10

23.若有说明语句:char c='\72';则变量c( )

A.包含1个字符

B.包含2个字符

C.包含3个字符

D.说明不合法,c的值不确定

24.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )

A.2.500000

B.2.750000

C.3.500000

D.0.000000

25.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( )

A.int

B.float

C.double

D.不确定

26.在C语言中,char型数据在内存中存储形式是( )

A.补码

B.反码

C.原码

D.ASCII码

27.表达式18/4*sqrt(4.0)/8值的数据类型为( )

A.float B char C.double D.不确定

28.设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( )

A.float B

char C.int D.double

29.若有以下定义,则能使值为3的表达式为3的表达式是( ) int k=7,x=12;

A.x%=(k%=5)

B.x%=(k-k%5)

C.x%=k-k%5

D.(x%=k)-(k% =5)

30.设以下变量均为int类型,则值不等于7的表达式是( )

A.(x=y=6,x+y,x+1)

B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y)

D.(y=6,y+1,x=y,x+1)

31.在c语言中(以16位pc机为例),一个char型数据在内存中所占的字节数为( ),一个int型数据在内存中所占的字节数为( ), 一个float型数据在内存中所占的字节数为( ), 一个double型数据在内存中所占的字节数为( ).

32.有以下定义,则计算表达式y+=y-=m*=y后的y值是()。int m=5,y=2;

33.若s是int型变量,s=6;则下面表达式的值为()s%2+(s+1)%2

34.若a是int 型变量,则下面表达式的值为()(a=4*5,a*2),a+6

35。若x和a均是int型变量,则计算式(1)后的x的值为(),计算表达式(2)后的x的值为()。(1)x=(a=4,6*2) (2) x=a=4,6*2 36.若a.b和c均是int型变量,则计算表达式后,a值为(),b值为(),c值为(). a=(b=4)+(c=2) 37.若a是int型变量,且a的初值为6,则计算表达式后a的值为()。 a+=a-=a*a

38.若a是int型变量,则计算表达式后a的值为()。a=25/3%3

39.若x和n均是int型变量,且x和n的初值均为5,则精神表达式后x的值为(),难得值为()。x+=n++ 40.若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为()。 a+(int)(b/3*(int)(a+c)/2)%4

41.若定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值()。(float)(a+b)/2+(int)x%(int)y

42.若有定义:char c='\010';则变量c中包含的字符个数为( ). 43.若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值( ) (x+y)%2+(int)a/(int)b

44.若x和n均为int型变量,且x的初值为12,n的初值为5,则计算表达式后x的值为( ) x%=(n%=2)

45.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为( )

46.C语言中的标识符只能由三种字符组成,它们是( ),( )和( ).

47.已知字母a的ASII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'+-'3'的值为( ).

48.把以下多项式写成只含七次乘法运算,其余皆为加.减运算的表达式为( ) 5x^7+3x^6-4x^5+2x^x^3-6x^2+x+10

49.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为( )

50.若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是( ) 51.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为( )

52.表达式pow(2.8,sqrt(double)(x)))值的数据类型为( )

53.假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是( )

顺序结构程序设计练习题

1.putchar函数可以向终端输出一个( )

A.整型变量表达式值

B.实型变量值

C.字符串

D.字符或字符变量值

2.以下程序的输出结果是( ) (注:□代表空格)

main( )

{printf(“\n*s1=%15s*',“chinabeijing");

printf(“\n*s2=%-5s*",“chi");}

A.*s1=chinabeijing□□□* *s2=**chi*

B.*s1=chinabeijing□□□* *s2=chi□□*

C.*s1=*□□chinabeijing* *s2=□□chi*

D.*s1=□□□chinabeijing* *s2=ch i□□*

3.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列.如果字符串长度以大于5,则输出按方式( );如果字符串长度小于5,则输出按方式( )

A.从左起输出该字串,右补空格

B.按原字符长从左向右全部输出

C.右对齐输出该字串,左补空格

D.输出错误信息

4.x和y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( )

A.scanf(“%d%s,%1e",&x,&y,&z);

B.scanf(“%2d*%d%f",&x,&y,&z);

C.scanf(“%x%d*%o",&x,&y);

D.scanf(“%x%o%6.2f",&x,&y,&z);

5.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )(注:□表示空格,表示回车)

int a1,a2;char c1;c2; scanf(“%d%c%d%c",&a,&c1,&a2,&c2);

A.10A□20B

B.10□A□20□B

C.10A20B

D.10A20□B

6.已有定义int x;float y;且执行scanf(“%3d%f",&x,&y);语句时,从第一列开始输入数据12345□678<回车>,则x的值为( 1 )y的值为( 2 )

(1)A.12345 B.123 C.45 D.345

(2)A.无定值B.45.000000 C.678.000000 D.123.000000

7.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )(注:□表示空格,表示回车)

int a1,a2; char c1,c2; scanf(“%d%d",&a1,&a2); scanf(“%c%c",&c1,&c2);

A.1020AB

B.10□20AB

C.10□□20□□AB

D.10□20AB

8.已有程序段和输入数据的形式,程序中输入语句的正确形式应当为( )

main( )

{int a;float f;printf(“\nInput number:");输入语句printf(“\nf=%f,a=%d\n",f,a);}输入的数据为

4.52

A.scanf(“%d,%f",&a,&f);

B.scanf(“%f,%d",&f,&a);

C.scanf(“%d%f,&a,&f);

D.scanf(“%f%d",&f,&a);

9.阅读以下程序,当输入数据形式为:25,13,10,正确的输入结果为( )

main( )

{int x,y,z; scanf(“%d%d%d",&x,&y,&z); printf(“x+y+z=%d\n",x+y+z);}

A.x+y+z=48

B.x+y+z=35

C.x+z=35

D.不确定值

10.根据题目中已给出的数据的输入和输出形式,程序中输入输出的语句的正确内容是( )

main( )

{int x;float y;printf(“enter x,y:");输入语句输出语句 }输入为:2□3.4 输出为:x+y=5.40

A.scanf(“%d,%f",&x,&y);

printf(“\nx+y=4.21",x+y);

B.scanf(“%d%f",&x,&y);

pr intf(“\nx+y=4.2f",x+y);

C.scanf(“%d%f",&x,&y);

printf(“\nx+y=6.1f",x+y);

Dscanf(“%d%3.1f",&x,&y);

p rintf(“\nx+y=%4.2f",x+y);

11.以下说法正确的是( )

A.输入项可以为一个实型常量,如scanf(“%f,3.5);

B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d);

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f",&f);

D.当输入数据时,必须指明变量的地址,如scanf(“%f",&f);

12.有输入语句:scanf(“a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应是( )

A.132

B.1,3,2

C.a=1□b=3□c=2

D.a=1,b=2,c=3

13.已知ch是字符变量,下面正确的赋值语句是( )

A.ch='123';

B.ch='\xff';

C.ch='\08';

D.ch= '\'

14 .已知ch是字符变量,下面不正确的赋值语句是( )

A.ch='a+b';

B.ch='\0';

C.ch='7'+'9'

D.ch=5 +9;

15.若有以下定义,且各变量均有初值,则正确的赋值语句是( ) int a,b; float x;

A.a=1,b=2;

B.b++;

C.a=b=5

D.b=int( x);

16.设x,y均为float型变量,则以下不合法的赋值语句是( )

A.++a;

B.y=(x%2)/10;

C.x*=y+8;

D.x=y=0; 17.设x,y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后x,y,z的值是:( )

A.x=10 y=15 z=10

B.x=10 y=10 z=10

C.x=10 y=15 z=15

D.x=10 y=5 z=10

18.以下程序的输出结果为( )

main( )

{short a; a=-4;

printf("\na:dec=%d,oct=%x,unsigned=%u\n",a,a,a,a );}

19.以下程序的输出结果为( )

main( )

{printf("*%f,%4.3f*\n",3.14,3.15);}

20. 以下程序的输出结果为( )

main( )

{char c='x';

printf("c:dec=%d,oct=%o,hex=%x,ASCII=%c\n",c,c,c ,c);}

21.已有定义int d=-2;执行以下语句后的输出结果是( ) printf("*d(1)=%d*d(20=%3d*d(3)=%-3d*\n",d,d,d); printf("*d(4)=%o*d(5)=%6o*d(6)=%-7o*\n",d,d,d);

22.以有定义int d=-2;执行以下语句后的输出结果是( ) printf("*d(1)=%d(20=%3d*d(3)=%-3d*\n",d,d,d); printf("*d(40=%6o*d(6)=%-7o*\n",d,d,d);

23.以有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是( )

printf("*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\n,d,d,d) ;

printf("*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\n",d,d,

d);

24. 以下程序输出结果为( )

main( )

{int x=1,y=2;

printf("x=%d y=%d*sum*=%d\n",x,y,x+y);

printf("10 squared is:%d\n",10*10);}

25. 以下程序的输出结果为( )

main( )

{int x=10;float pi=3.1416;

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

printf("(2)%6d\n",x); printf("(3)%f\n",56.1 );

printf("(4)%514f\n",pi); printf("(5)%e\n",568.

1); printf("(6)%14.e\n",pi);printf("(7)%g\n",pi) ; printf("(8)%12g\n",pi);

26.假设变量a和b均为整型,以下语句可以不借助任何变量把a,b中的值进行交换,请填空.

a+=( ) b=a-( ); a-=( ); 27.设变量a,b,c均为整型,以下语句借助中间变量t把a,b,c中的值进行交换,即:把b中的值给a,把c中的值给b,把a中的值给c.例如:交换前a=10,b=20,c=30,交换后a=20,b=30,c=10,请填空.

( ); a=b; b=c; ( );

28.设x,y,z均为int型变量,m为long型变量,则在16位机上执行下面赋值语句后,y=( ),z=( ),m=( ). y=(x=32767,x-1) ; z=m=0xffff;

29.如有int x;则执行下面语句后x值是( )

x=7; x+=x-=x+x;

30.若有int a,b;则以下语句的功能是( )

a+=b; b=a-b; a-=b;

31.在scanf函数调用语句中,可以在格式字符和%之间加一星号,它的作用是( );

当输入以下数据: 10_ _20_ _30_ _40<承认>,下面语句的执行结果是( )

int a1,a2,a3; scanf("%d%d*%d%d",&a1,&a2,&3);

32.若有以下定义和语句,为使变量c1的到字符'A',变量c2得到字符'B'正确的格式输入形式是( )

char

c1,c2; scanf("%4c%4c",&c1,&c2); 33.执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',正确的数据输入形式是( )

mian( 0

{int a,b; float x,y; char c1,c2; scanf(a=%d b=%d",&a,&b); scanf("x=%f y=%f",&x,&y);

scanf("c1=%c c2=%c",&c1,&c2);

printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c",a,bx, y,c1,c2);}

34.已有定义int i,j;float x;为了使i=10,j=12,x=410.34,其对应的scanf函数调用语句的输入形式是( )

scanf("%o%x%e",&i,&j,&x);

选择结构程序设计练习题

1.逻辑运算符两侧运算对象的数据类型( )

A.只能是0和1

B.只能是0或非0正数

C.只能是整型或字符型数据

D.可以是任何类型的数据

2.下列运算符中优先级最高的是( )

A.<

B.+

C.&&

D.!=

3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( )

A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B.(x>=1)||(x<=10)||(x>=200)||(x<=210)

C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)

D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)

4.表示图中坐标轴上阴影部分的正确表达式是( )

A.(x<=a)&&(x>=b)&&(x<=c)

B.(x<=a)||(b<=x<=c)

C.(x<=a)||(x>=b)&&(x<=c)

D.(x<=a)&&(b<=x<=c

5.判断char型量ch是否为大写字母的正确表达式是()

A.‘A’<=ch<=‘Z’

B.(ch>=‘A’)&(ch<=‘Z’)

C.(ch>=‘A’)&&(ch<=‘Z’)

D.(‘A’<=ch)AND(‘Z’>=ch)

6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()

A.‘x’&&‘y’

B.x<=y

C.x||y+z&&!y

D.!(x

7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是()

A.0

B.语法错误

C.1

D.“假”

8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是()

A.A%2==1

B.!(A%2==0)

C.!(A%2)

D.A%2

9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为()

A.1

B.2

C.3

D.4

10.下列运算符中优先级最低的是( )优先级最高的是( )

A.?

B.&&

C.+

D.!=

11.以下程序的运行结果是( )

#include

main() {int a,b,d=241;a=d/100%9; b=(-1)&&(-1);

printf(“%d,%d”,a,b);}

A.6,1

B.2,1

C.6,0

D.2, 0

12.执行以下语句后a的值为( )

int a,b,c;

a=b=c=1; ++a||++b&&++c;

A.错误

B.0

C.2

D.1

A.1

B.2

C.错误

D.0

13.执行以下语句后的值为(),b的值()

int a=5,b=6,w=1,x=2,y=3,z=4;

(a=w>x)&&(b=y>z);

A.5

B.0

C.2

D.1

A.6

B.0

C.1

D.4

14.以下不正确的if语句形式是()

A.if(x>y&&x!=y);

B.if(x==y)x+=y;

C.if(x!=y)scanf(“%d“,&x) else scanf(“%d”,&y);

D.if(x

15.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( )

if(x>y) z=x;x=y;y=z;

A.x=10,y=20,z=30

B.x=20,y=30,z=30

C.x=20,y=30,z=10

D.x=20,y=30,z=20

16.以下语句语法正确的是:( )

A.if(x>0) printf(“%f”,x)else printf(“%f”,-x);

B.if(x>0) {x=x+y;printf(“%f”,x);}

else printf(“%f”,-x)

C.if(x>0) {x=xy; printf(“%f”,x);};

else printf(“%f”,-x);

D.if(x>0) {x=x+y;printf(“%f”,x)}

else printf(“%f”,-x);

17.请阅读以下程序,该程序( )

main()

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

if(a+b+c) printf(“***\n”); else printf(“$$$\n”);}

A.有语法错误不能通过编译 C.输出***

B.可以通过编译但不能通过连接 D.输出$$$

18.以下程序的运行结果是( )

main()

{int m=5;

if(m++>5) printf(“%d\n”,m);

else printf(“%d\n”,m--);}

A.4

B.5

C.6 D7

19.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )

if(a

if(c

else if(a

if(b

else x=3;

else x=6;

else x=7;

A.1

B.2

C.3

D.6

20.有一函数关系如下:

x-1(x<0)

y={ x(x=0)

x+1 (x>0)

则下面程序段中能正确表示上面关系的是( )

A.y=x+1; if(x>=0) if(x==0) y=x; else y=x-1;

B.y=x-1 if(x!=0) if(x>0) y=x+1; else y=x;

C.if(x<=0) if(x<0) y=x-1; else y=x; else y=x+1;

D.y=x; if(x<=0) if(x<0) y=x-1; else y=x+1;

21.以下程序的输出结果是( )

main()

{int a=100,x=10,y=20,ok1=5,ok2=0;

if(x

if(y!=10)

if(!ok1)

a=1;

else if(ok2) a=10;

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

A.1

B.0

C.-1

D.值不确定

22.以下程序的输出结果是( )

main()

{int x=2,y=-1,z=2;

if(x

if(y<0) z=0;

else z+=1;

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

A.3

B.2

C.1

D.0

23.为了避免在嵌套的条件语句if--else中产生二义性,C语言规定:else子句总是与( )配对。

A.缩进排位置相同的if

B.其之前最近的if

C.其之后最近的if

D.同一行上的if

24.以下不正确的语句为( )

A.if(x>y);

B.if(x=y)&&(x!=0) x+=y;

C.i f(x!=y) scanf(“%d”,&x); else scanf(“%d”,&y);

D.if(x

25.main()

{float a,b; scanf“%f”,&a);

if(a<0.0) b=0.0;

else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0);

else if(a<10.0) b=1.0/x;

else b=10.0;

printf(“%f\n”,y);}

若程序运行时输入为 2.0,则上面程序的输出结果是( )

A.0.000000

B.0.500000

C.1.000000

D.0.250000

26.若运行时给变量x输入12,则以下程序的运行结果是()

main()

{int x,y; scanf(“%d\n”,y);}

A.0

B.22

C.12

D.10

27.以下程序的运行结果是( )

main()

{int k=4,a=3,b=2,c=1;

printf(“\n%d\n”,k

A.4

B.3

C.2

D.1

28.执行以下程序段后,变量a,b,c的值分别是( ) int x=10,y=9; int a,b,c;

a=(-x= =y++)?- -x:++y; x=x++;c=y;

A.a=9,b=9,c=9

B.a=8,b=8,c=10

C.a=9,b=10,c=9

D.a=1,b=11,c=10

29.int w,x,y,z,m;则执行以下语句后m的值为( ) w=1;x=2;y=3;z=4;

m=(w

m=(m

A.1

B.2

C.3

D.4

30.若w=1,x=2,y=3,z=4,则表达式w

31.执行以下程序段后的输出结果是:( )

int w=3,z=7,x=10;

printf(“%d\n”,x>10?x+100:x-10);

printf(“%d\n”,w++||z++);

printf(“%d\n”,!w>z);

printf(“%d\n”,w&&z);

A.0

B.1

C.0

D.0

1 1 1 1

1 1 0 0

1 1 1 0

32.当a=3,b=2,c=1时,表达式f=a>b>c的值是________

33.当a=5,b=4,c=2时,表达式a>b!=c的值是________

34.以下程序的运行结果是___________

main()

{int x=1,y,z;

x*=3+2; printf(“%d\t”,x);

x*=y=z=5; printf(“%d\t”,x);

x=y==z; printf(“%d\n”,x);}

35.在C语言中,表示逻辑“真”用__________

36.设y为int型变量,请写出描述“y是奇数”的表达式__________

37.C语言提供的三种逻辑运算符是____ _____ _____

38.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式____________

39.设int x,y,z;请描述“x,y和z中有两个为负数”的表达式____________

40.已知A=7.5,B=2,c=3.6,表达式A>B&&C>A||AB 的值是________

41.若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是____________

42.若 a =2,b=4,则表达式(x=a)||(y=b)&&0的值是___________

43.若a=1,b=4,c=3,则表达式!(a

44.若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是___________

45.若a=5,b=2,c=1,则表达式a-b

46.设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是_________

47.条件“2

48.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后;n的值为______,m的值为________

49.以下程序运行结果是______

main()

{int a1,a2,b1,b2; int i=5,j=7,k=0;

a1=!k; a2=i!=j;

printf(“a1=%d\t a2=%d\n”,a1,a2);

b1=k&&j; b2=k||j;

printf(“b1==%d\t b2=%d\n”,b1,b2);}

51.以下程序的运行结果是:_________

main()

{int x,y,z x=1;y=1;z=0;

x=x||y&&z; printf(“%d,%d”,x,x&&!y||z);}

52.有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值是______

循环控制练习题

1.设有程序段 int k=10; while (k=0) k=k-1; 则下面描述中正确的是()

A while循环执行10次

B 循环是无限循环

C 循环体语句一次也不执行

D 循环体语句执行一次

2.设有以下程序段int x=0,s=0; while(!x!=0)s+=++x;printf("%d",s) ;则()

A 运行程序段后输出0

B 运行程序段后输出1

C 程序段中的控制表达式是非法的

D 程序段执行无限次

3、语句while(!E);中的表达式!E特等价于()

A、E==0B、E!=1C、E!=0D、E==1

4、下面程序段的执行结果是()

a=1;b=2;c=2;

while(a

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

A、1,2,0

B、2,1,0 C 、1,2,1 D、2,1,1

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

x=y=0;

while(x<15) y++,,x+=++y;

printf("%d,%d",y,x);

A、20,7

B、6,12

C、20,8 D 8,20

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

int n=0;

while (n++<=2); printf("%d",n);

A,2 B、3 C、4 D 有语法错误

7、设有程序段

t=0;

while(printf("*"))

{t++; if(t<3) break;}下面描述正确的是()

A、其中循环控制表达式与0等价

B、其中循环控制表达式与’0‘等价

C 、其中循环表达式是不合法的 D、以上说法都不对

8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结束循环,请选择填空。main()

{int a,b,t;

scanf(“%d,%d”,&a,&b);

while( )

{if(a>b) {t=a;a=b;b=t;}

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

scanf(“%d,%d”,&a,&b);}}

A、!a=b

B、a!=b

C、a==b

D、a=b

9、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。

#include

main( )

{int m=0,n=0;

char c;

while((__)!=’\n’)

{if(c>=’A’&&c<=’Z’) m++;

if(c>’a’&&c<=’z’) n++;}

printf(“%d\n”,m

A. c==getchar()

B.getchar()

C.c=getchar()

D.scanf(“%c”,c)

A. n:m

B.m:n

C.m:m

D.n:n

10、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,Z变成B。填空

#include

main()

{char c;

while((c=getchar( ))!=’\n’)

{if(c>=’a’&&c<=’z’)

{_______;

if(c>=’Z’&&c<=’Z’+2)

___________;} printf(“%c”,c);}

A.c+=2

B.c-=32

C.c=c+32+2

D.c-=30

A.c=’B’

B.c=’A’

C.c-=26

D.c=c+26

11,下面程序的功能是在输入的一批正整数中求出最大者,输入0时结束,请选择填空

main( )

{int a,max=0; scanf(“%d”,&a);

while(____)

{if(max

scanf(“%d”,&a);}

printf(“%d”,max);}

A.a==0

B.a C!a==1 D.!a

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

main( )

{int num=0;

while(num<=2)

{nu m++; printf(“%d\n”,num);}

A.1

B.12

C.123

D.1234

13.若运行以下程序时,从键盘输入2473,则下面程序的运行结果是()

#include

main( )

{int c;

while((c=getchar( ))!=’\n’)

switch(c-‘2’)

{case 0:

case 1:putchar(c+4);

case 2:putchar(c+4);break;

case 3:putchar(c+3);

case 4:putchar(c+2);break;}

printf(“\n”);}

A.668977 B.668966 C.66778777 D.6688766

14.C语言中while和do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do–while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

15 .以下程序段()

x=-1

do{x=x*x;}

while(!x);

A.是死循环

B.循环执行二次

C.循环执行一次

D.有语法错误

16、以下描述中正确的是()

A.由于do -while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。

B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。

C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。

D.do-while循环中,根据情况可以省略while

17.若有以下后句

int x=3;

do{print("%d\n",x=2);} while(!(-x));则上面程序段()

A.输入的是1

B.输出的是1和-2

C.输出的是3和0

D.死循环

18.下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环,填空。

main()

{long int num;

scanf("%ld",&num);

do{if(_____) printf("%ld,num);

scanf("%ld",&num);}

while(______);}

A.num%100/10=3 .Bnum/100%10=3 C.num%10/10=3 D.num/10%10=3

A.!num

B.num>0=0

C.!num=0

D.!num!=0

19.下面程序的运行结果是()

main()

{int y=10;

do{y--;} while(--y);

printf("%d\n",y--);}

A .-1 B.1 C.8 D.-8

20.下面程序的运行结果是()

#include

main()

{char c; int v0=0,v1=0,v2=0;

do{switch(c=getchar())

{case'a':case'A':case'e':case'E':

case'i':case'I':case'0':case'0':

case'u':case'U':v1+=1;

default:v0+=1;v2+=1;}

}while(c!='\n');

print(%d,%d,%d",v0,v1,v2);}

A.7,4,7

B.8,4,8

C.11,4,11

D.12,4,12

21.下面程序的运行结果是()

main()

{int a=1,b=10,

do{b-=a;a++;}while(b-,0);

printf("%d,%d",a,b);}

A.3.11

B.2,8

C.1,-1

D.4,9

22.下面有关for循环的正确描述是()

A.for循环只能有于循环次数已经确定的情况

B.for 循环是先执行循环体语句,后判断表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来

23.对for(表达式1;; 表达式3)可理解为()

A.for(表达式1;0;表达式3)

B.for(表达式1;1;表达式3)

C.for(表达式1;表达式1;表达式3)

D.for(表达式1;表达式3;表达式3)

24.若i为整型变量,则以下循环执行的次数是()

for(i=2;i=0;) printf(“%d”,i--)

A.无限次

B.0次

C.1次

D.2次

25.以下for循环的语句是()

for(x=0,y=0;(y=123)&&(x<4);x++);

A.是无限循环

B.循环次数不定

C.4次

D.3次

26.以下不是无限循环的语句是()

A.for(y=0,x=1;x>++y;x=I++) I=x;

B.for(; ;x++=I);

C.while(1) {x++;}

D.for(I=10; ;I--) sum+=I;

27.以下程序段的运行结果是()

for (y=1;y<10;) y=((x=3*y,x+1),x-1);

printf(“x=%d,y=%d”,x,y);

A. x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

28.下面程序段的运行结果是()

for(x=3’x<6;x++)

printf((x%2)?(“**%d”):(“##%d\n”),x);

A.**3

B.##3

C.##3

D.**3##4

##4 **4 **4##5 **5

**5 ##5

29.下列程序段不是死循环的是( )

A. int I=100 while(1)

{I=I%100+1;

if(I>100)break;}

B. for(;;)

C. int k=0;

do{++k;}while(k>=0);

D.int s=36; while(s); --s;

30.执行语句for(I=1;I++<4;);后变量I的值是()A.3; B.4 C.5 D.不定

31.下面程序的功能是计算1到50中是7的倍数的数值之和,请选择填空。

Main()

{int I,sum=0;

for(I=1;I<=50;I++)

if(______)sun+=I;

printf(“%d”,sum);}

A.(int)(i/7)=i/7 B.(int)i/7=i/7 C.i%7+0 D.i%7=0 32.下面程序的运行结果是()

main( )

{int a;

for(a=1;a<=5;a++

switch(a%5)

{case0:printf(“*”);break;

case1;printf(“#”);break;

default:printf(“\n”);

case2:printf(“&”);}}

33.下面程序的运行结果是()

main()

{intx,I;

for(I=1; I<100;I++)

{x=I; NO.14

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

ptintf(“%d”,x);}}

A.39 81

B.42 84

C.26 68

D.28 70

34.下面程序的运行结果是()

main()

{int I,b,k=0;

for(I=1;I<=5;I++)

{b=I%2;

while(b-->=0) k++;}

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

A.3,-1

B.8-1

C.3,0

D.8,-2

35.以下正确的描述是()

A. continue语句的作用是结束整个循环的执行

B. 只能在循环体内和switch语句体内使用break语句

C. 在循环体内使用break或continue语句

D. 从多层循环嵌套中退出时,只能使用goto语句36.下面程序段()

for(t=1;t<=100;t++)

{sca nf(“%d”,&x);

if(x<0) continue;

ptintf(“%3d”,t);}

A. 当x<0时整个循环结束

B. x>=0时什麽也不输出

C. printf函数永也不执行

D. 最多允许输出100个非负整数

37.下面程序段()

x=3;

do{y=x--;

if(!y) {printf(“x”); continue;}

printf(“#”);}

while(1<=x<=2);

A.将输出##

B.将输出##*

C.是死循环

D.含有不合法的控制表达式38.以下是死循环的是()

A.for(I=1; ; )

{if(++I%2==0) continue

if(++I%3==0) break;}

B.I=32767;

{if(I<0) break;}while(++I);

C.for(I=1; ; ) if(++I<10) continue;

D.i=1; while(I--);

39.以下描述正确的是()

A. goto语句只能用于退出多层循环B. switch语句中不能出现continue语句C.只能用continue语句来终止本次循环D.在循环中break语句不能独立出现40.下面程序的运行结果是()

#include

main()

{int k=0; char c=’A’;

do {switch(c++)

{case’A’:k++;break;

case’B’:k--;

case’C’:k+=2;break;

case’D’:k=k%2;continue;

case’E’:k=k*10;break;

default:k=k/3;}

while(c<’G’);

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

A.k=3

B.k=4

C.k=2

D.k=0

41.下面程序的运行结果是()

main()

{int a,b;

for(a=1,b=1;a<=100;a++)

{if(b>=20)break;

if(b%3==1) {b+=3;continue;}

b=-5;}

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

A.7

B.8

C.9

D.10

42.下面程序的运行结果是()

main()

{int I,j,x=0;

for(I=0;I<2;I++)

{x++;

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

{if(j%2)continue;

x++;}

ptin tf(“x=%d\n”,x);}

A.x=4

B.x=8

C.x=6

D.x=12

43.下面程序的运行结果是()

main()

{int I;

for(I=1;I<=5;I++)

{if(I%2) printf(“*”);

else continue;

printf(“#”);}

printf(“$\n”);}

A.*#*#*#$

B.#*#*#*$

C.*#*#$

D.#*#*$

44.下面程序的运行结果是()

main()

{int I,j,a=0;

for(I=0;I<2;I++)

{for(j=0;j<4;j++) if(j%2) break;

a++;}

a++;}

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

A.4

B.5

C.6

D.7

45.下面程序段是从键盘输入的字符中统计数字字符的

个数,用换行符结束循环。请填空:

int n=0,c; c=getchar();

while( )

{if( ) n++; c=getchar();}

46.当运行以下程序时,从键盘输入right?,则下

面程序的运行结果是:

#include

main( )

{char c;

wh ile((c=getchar()!=’?’) putchar(++c);)

47.下面程序的运行结果是:

main()

{int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a;s=s+n;++count;}

printf(“s=%d”,d);}

48.当运行以下程序时,从键盘输入 China#,则下面程序的运行结果是:________________________

#include

main()

{int v1=0, v2=0; char ch;

while((ch=getchar()!=’#’)

switch(ch)

{case‘a’: case‘h’:

default:v1++

case‘o’:v2++;}

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

49.执行以下程序段以后,K值是:________________

K=1;n=263;

Do{k*=n%10; n/=10;}while(n);

50.下面程序段中循环体的执行次数是_______________ a=10; b=0;

do{b+=2;a-=2+b;}while(a>0);

51.下面程序段的运行结果是:______________________ x=2;

do{printf(“*”); x-;}while(!x==0);

52.下面程序段的运行结果是:_____________________ I=1; a=0; s=1;

Do {a=a+s*I;s=-s;I++;}while(!x<=10);

Printf(“a=a%d”,a);

53.当运行以下程序时,从键盘输入1 2 3 4 5 -1, 则下面程序的行结果是: ____________________________

main()

{int k=0,n;

do{scanf(“%d”,&nn);k+=n;}while(n!=-1);printf(“k=%d n=%d=n”,kn);}

54.下面程序的运行结果:_____________________

main()

{int I,x,y; I=x=y=0

do{++I;

If(I%2!=0) {x=x+I; I++;}

Y=y+I++;

}while(I<=7);

printf(“x=%d,y=%d\n”,x,y);}

55.下面程序的运行结果是______________________ main()

{int a,b,I; a=1; b=3; I=1;

do{printf("%d,%d",a,b);

a=(b-a)*2+b;

b=(a-b)*2+a;

if(I++%2==0) printf("\n");

}while(b<100);}

56.当运行以下程序进,从键盘输入-1 0,则下面程序的运行结果是:______________________

main()

{int a,b,m,n; m=n=1;

scanf(“%d%d”,&a,&b);

do{if(a>0){m=2*n;b++;}

else {n=m+n;a+=2;b++;}

}while(a==b);

printf(“m=%dn=%d”,m,n);}

57.鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。

For(x=1;x<=29;x++)

{y=30-x;

if(_______________) printf(“%d,%d\n”,x,y);} 58.下面程序段的运行结果是:——————————for(a=1;I=-1;-1<=I<1;I++)

{a++;printf(“%2d”,a);}

peintf(“%2d”,I);

59.若for循环体用以下形式表示:

for(表达式1;表达式2;表达式3)循环体语句

则执行语句for(I=0;I<3;I++) printf(“*”);时,表达式1执行(______________________)次,表达式3执行(______________________)次。

60.下面程序的功能是计算1-3+5-7+…-99+100的值,请填空。

Main()

{int I,t=1,s=0;

for(I=1;I<=101;I+=2)

{____________;s=s+t;____________;}

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

61.下面程序的运行结果是:_________________

main()

{int I,t,sum=0;

for(t=I=1;I<=10;)

{sum+=t; ++I;

if(I%3==0)t=-I;

else t=I}

printf(“sum=%d”,sum);}

62.下面程序的运行结果是:_________________

main()

{int I;

for(I=1;I<=5;I++)

switch(I%2)

{case0:I++;printf(“#”);break;

case 1:I+=2;printf(“#”)

default:printf(“\n”);}}

63.下面程序的运行结果是:_______________

main()

int I,j=4;

for(I=j;I<=2*j;I++)

switch(I%j)

{case 0:

case 1:printf(“*”);break;

case 2:printf(“#”);}}

64.若从键盘输入6514,则下面程序的运行结果是:__________________

main() {int m,n;

printf(“Enter m,n:”);

scanf(“%d%d”,&m,&n);

while(m!=n)

{while(m>n) m-=n;

while(n>m) n-=m;}

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

65.下面程序的运行结果是:________________ main()

{int y,a; y=2;a=1;

while(y-!=-1)

{do {a*=y; a++;}while(y--);}

printf(“%d,%d”,a,y);}

66.下面程序的运行结果是:_______________ main()

{int I.j;

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

{for(j=0;j<=5;j++)

{if(I==0‖j==0‖I==3‖j==5) printf(“ ”); else printf(“ “);}

printf(“\n”);}

}

67.下面程序的运行结果是: _______________ #include

main()

{int I,j:

for(I=4;I>=4;I--)

{for(j=1;j<=I;j++)putchar(‘#’);.

For(j=1;j<=4-I;j++)putchar(‘*’);

putchar(‘\n’);}

}

68.下面程序的运行结果是: _______________ main()

{int I,k=0;

for(I=1; ;I++)

{k++;

while(k.

{k++;

if(k%3==0) goto loop;}

}

loop:prubtf(“%d,%d”,I,k);}

69.下面程序段的运行结果是:_______________ I=1;s=3;

do[s+=I++;

if(s%7==0) continue;

else ++I;}

while(s<15);

ptintf(“%d”,I);

70.下面程序的运行结果是: _______________ main()

{int I=1;

while(I<=15)

if(++I%3!=2) continue;

else printf(“%d”,I) ;

printf(“n\”);}

71.下面程序的输出结果是:_______________ main()

{int I,j,k=19;

while(I=k-1)

{k-=3;

if(k%5==0) {I++;continue;}

else if(k<5) break;

I++;}

Printf(“I=%d,k=%d\n”,I,k);}

72.下面程序的运行结果是: _______________

main()

{int a,y;

a=10;y=0;

do{a+=2;y+=a;

if(y>50)break;

}while(a=14);

printf(“a=%d y=%d”,a,y);}

73.下面程序的运行结果是:_______________

main()

{int I=5;

do {switch(I%2)

{case 4:I--;break;

case 6:I--;continue;}

I--;I--

Printf(“%d”,I);

}while(I>0);}

数组练习题

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

A.整型常量

B.整型表达式

C.整型常量或整型表达式

D.任何类型的表达式

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];

3. 若有说明: int a[10];则对a数组元素的正确引用是( )

A .a[10] B. a[3.5] C. a(5) D. a[10-10]

4. 在C语言,一维数的定义方式为: 类型说明符数组名( );

A .[常量表达式]B.[整型表达式]

C.[整型常量]或[整型表达式]

D.[整型常量]

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

A .int a[10]=(0,0,0,0,0); B.int a[10]={};

C.int a[ ]={0};

D.int a[10]={10*1}

6. 以下对二维数组a正确说明是( )

A. int a[3][ ];

B. float a(3,4);

C. double a[1][4];

D. float a(3)(4);

7.若有说明: int a[3][4];则对a数组元素的正确引用是( )

A. a[2][4]

B. a[1,3]

C. a[1+1][0]

D. a(2)(1)

8.若有说明:int a[3][4];则对a数组元素的非法引用是( )

A. a[0][2*1]

B. a[1][3]

C. a[4-2][0]

D. a[0][4]

9. 以下能对二维数组a正确初始化的语句是( )

A. int a[2][ ]={{1,0,1},{5,2,3}};

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

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

D. int a[ ][3]={{1,0,1},{ },{1,1}};

10.以下不能对二维数组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};

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

A.只有元素a[0][0]可行到初值0

B. 此说明语句不正确

C. 数组a中各元素都可得到初值,但其值不一定为0

D. 数组a中第个元素均可得到初值0

12. 若有说明:int a[ ][4]={0,0};则下面不正确的叙述是:( ) A.数组a的每个元素都可得到初值0

B. 二维数组的第一维大小为1

C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1

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

13. 若有说明:int a[3][4]; 则数组a中各元素()

A. 可在程序的运行阶段得到初值0

B.可在程序的编译阶段得到初值0

C.不能得到确定的初值

D.可在程序的编译或运行阶段得到初值0

14.以下各组选项中,均能正确定义二维实型数组a的选项是:()

A. float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}};

B. float a(3,4); float a[3][4]; float a[ ][ ]={{0};{0}};

C. float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}};

D. float a[3][4]; float a[3][ ]; float a[ ][4]

15.下面程序

1 main()

2 {

3 int a[3]={3*0};

4 int I;

5 for(I=0;I<3;I++) scanf(“%d”,&a[I]);

6 for(I=1;I<3;I++) a[0]=a[0]+a[I];

7 printf(“%d\n”,a[0];)

A. 第3行有错误

B. 第7行有错误

C.第5行有错误

D.没有错误

16.下面程序

1 main()

2 {

3 float a[10]={0,0};

4 int I;

5 for(I=0;I<3;I++) scanf(“%d”,&a[I]);

6 for(I=1;I<10;I++) a[0]=a[0]+a[1];

7 printf(“%f\n”,a[0]);}

A. 没有错误

B. 第3行有错误

C.第5行有错误

D.第7行有错误

17.下面程序有错误的行是

1 main()

2 {

3 int a[3]={1};

4 int I;

5 scanf(“%d”,&a);

6 for(I=1;I<3;I++) a[0]=a[0]+a[1];

7 printf(“a[0]=%d\n”,a[0]);}

A. 3

B. 6

C. 7

D. 5

18.下面程序

1 main()

2 {

3 int a[3]={0};

4 int I;

5 for(I=0;I<3;I++)scanf(“%d”,&a[I]);

6 for(I=1;I<4;I++) a[0]=a[0]+a[I];

7 printf(“%d\n”,a[0]);}

A.没有错误

B.第3行有错误

C.第5行有错误

D.第6行有错误

19.若二数组a有m列,则计算任意元素a[I][j]在数组中位置的分式为__________

A.I*m+j

B.J*m+I

C.I*m+j-1

D.I*m+j+1

20.对以下说明语句的正确理解是()int

a[10]={6,7,8,9,10};

A.将5个初值依次与给a[1]至a[5]

B.将5个初值依次与给a[1]至a[4]

C.将5个初值依次与给a[6]至a[10]

D.因为数组长度与初值的个数不同,所以此语句不正确

21.以下不正确的定义语句是:( )

A.double x[5]={2.0,4.0,6.0,8.0,10.0};

B.int y[5]{0,1,3,5,7,9};

C.char cl[ ]={‘1’,’2’,’3’,’4’,’5’};

D.char c2[ ]={‘\x10’,’\xa’,’\x8’};

22.若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( )

A.2

B.3

C.4

D.无确定值

23.若二维数组a有m列,则在a[I][J]前的元素个数为()

A.J*m+I

B.I*m+j

C.I*m+j-1

D.I*m+j+1

24.定义如下变量和数组:

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

则下面语句的输出结果是()for(k=0;k<3;k++) printf(“%d”,a[k][2-k]);

A.3 5 7

B.3 6 9

C.1 5 9

D.1 4 7

25.以下正确的定义语句是()

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

B.float x[3][ ]={{1},{2},{3}}

C.long b[2][3]={{1},{1,2},{1,2,3}};

D.double y[ ][3]={0};

26.下面程序的运行结果是()

main()

{int a[6][6],I,J;

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

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

a[I][j]=(I/j)*(j/I);

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

{for(j=1;j<6;j++)

printf(“%2d”,a[I][j];

printf(“\n”;)}

A.1 1 1 1 1

B.0 0 0 0 1

C.1 0 0 0 0

D.1 0 0 0 1

1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0

1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0

1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0

1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1

27.下面程序的运行结果是()

main()

{int a[6],I;

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

{a[I]=9*(I-2+r*(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

28.下面是对s的初始化,其中不正确的是()

A.char s[5]={“abc”};

B.char s[5]={‘a’,’b’,’c’};

C. char s[5]=””;

D. char s[5]=”abcdef”;

29.下面程序段的运行结果是()

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

printf(“%s”,c);

A.’a”b’

B.ab

C.ab□c

D.abc

30.对两个数组a和b进行如下初始化

char a[ ]=”ABCDEF”;

char a[ ]={‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是()

A.a和b数组完全相同

B.a与b长度相同.

C.a和b中都存放字符串

D.a数组比b数组长度长

31.有两个字符数组a,b,则以下正确的输出语句是()

A.gets(a,b);

B.scanf(“%s,%s”,a,b);

C.scanf(“%s%s”,&a,&b);

D.gets(“a”),gets(“b”);

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

A.puts(a,b);

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

C.putchar(a,b);

D.puts(a),puts(b);

33.下面程序段的运行结果是()

char a[7]=”abcdef”;

char b[4]=”ABC”;

strcpy(a,b);

printf(“%c”,a[5]);

A.□

B.\0

C.e

D.f

34.有下面的程序段,则()

char a[3],b[ ]=”China”;

a=b; printf(“%s”,a);

A.运行后将输出China

B. 运行后将输出Ch

C. 运行后将输出Chi

D.编译出错

35.下面程序段的运行结果是()

char c[ ]=”\t\v\\\0will\n”; printf(“%d”,strlen(c));

A.14

B.3

C.9

D.字符串中非法字符,输出值不确定

36.判断字符串a和b是否相等,应当使用()

A. if(a==b)

B.if(a=b)

C.if(strcmp(a,b))

D. .if(strcmp(a,b))

37.判断字符串s1是否大于字符串s2,应当使用()

A.if(s1>s2)

B. .if(strcmp(s1,s2))

C. .if(strcmp(s2,s1)>0)

D. .if(strcmp(s1,s2)>0)

38.下面程序段是输出两个字符串中对应相等的字符请填空

char x[ ]=”program”, char y[ ]=”Fortran”;

int I=0;

while(x[I]1=’\0’&&y[I]!=’\0’)

if(x[I]==y[I]) printf(“%c”,?_____________);

else I++;

A.x[I++]

B.y[++I]

C.x[I]

D.y[I]

39.下面描述正确的是()

A. 两个字符串所包含的字符个数相同时才能比较字符串

B. 字符个数多的字符串比字符个数少字符串大

C. 字符串“STOP□”与“STOP”相等

D. 字符串“That”小于字符串“The”

40.下述对C语言字符数组的描述中错误的是()

A. 字符数组可以存放字符串

B. 字符数组的字符串可以整体输入,输出

C. 右以在赋值语句中能过赋值运算符“=”对字符数整体赋值

D. 不可以用关系运算符对数组中的字符串进行比较

41.下面程序的功能是将字符串S中的所有的字符C删除。#include

main()

{char s[80]; int I,J;

gets(s):

for(I=J=0;s[I]!=’\()’;I++)

if(s[I]!=’c’) ;

s[J]=’\0’;

puts(s);}

A,s[j++]=s[I] B.s[++j]=s[I] C.s[j]=s[I];j++

D.s[j]=s[I]

42.下面程序的运行结果是()

#include

main()

{cahr ch[7]={“12ab56”}; int I,s=0;

for(I=0;ch[I]>=’0’&&ch[I]<=’9’;I+=2)

s=10*s+ch[I]-‘0’;

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

A. 1

B. 1256

C. 12ab56

D. 1256

43.当运行以下程序时,从键盘输入:AhAMa□

Aha,则以下程序运行结果是( )

#include

main()

{char s[80],c=’a’; int I=0;

scanf(%s”,s);

While(s[I]!=’\0’)

{if(s[I]==c) s[I]=s[I]-32;

else if(s[I]==c-32) s[I]=s[I]+32’

I++’}

Puts(s);}

A.ahAMa

B.AhAMa

C.AhAMa□ahA

D.ahAMa□ahA

44.下面程序的运行结果是()

#include

#include

main()

{char a[80]=”AB”,b[80]=”LMNP”;

int I=0

strcat(a,b);

While(a[I++]!=’\0’) b[I]=a[I]

Pust(b);}

A. LB

B.ABLMNP

C.AB

D.LBLMNP

45.下面程序的运行结果是()

#include

main()

{char str[ ]=”SSSWLIA”,c;

int k;

for(k=2;(c=str[k]!=’\0’;k++)

{switch(c)

{case’I’:++k;break;

case’L’:continue;

default:putchar(c);continue;}

putchar(‘*’);}}

A. SSW*

B.SW*

C.SW*A

D.SW

46.下面程序的运行结果是()

#include

main()

{char a[ ]=”morning”,t; int I,j=0;

for(I=1;I<7;I++) if(a[j]

t=a[j]; a[j]=a[7]; a[7]=a[j]; puts(a);}

A. mogninr

B.mo

C.morning

D.mornin

47.若有定义:doublex[3][5];则x数组中行下标的下限为(),列下标的上限为()。

48.若二维数组a有m列,则计算任一元素a[I][j]在数组中的位置的公式为()

49.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初始值是(),a[2][1]得到的初值是()。

50. 若有以下输入,则下面程序的运行结果是:___________

7□10□5□4□6□7□9□8□3□2□4□6□12□2□

-1

main() {int b[51],x,I,j=0,n=0;

scanf(“%d”,&x);

while(x>-1) {b[++n]=x; scanf(“%d”,&x);}

for(I=1;I<=n;I++)

if(b[I]%2==0) b[++j]=b[I];

for(I=1;I<=j;I++) printf(“%3d”,b[I]); printf(“\n”);}

51.下面程序以每行4个数据的形式输出a数组,填空

#define N20

main()

{int a[N],I;

for{I=0;I

for(I=0;I

{if( ) ;

printf(“%3d”,a[I]);}

printf(“\n”);}

52.下面的运行结果是

main()

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

int b[3][2],I,j;

printf(“array a:\n”);

for(I=0;I<=1;I++)

{for(j=0;j<=2;J++)

{printf(“%5d”,a[I][j]);

b[j][I]=a[I][j];}

printf(“\n”);}

printf(“array b:\n”);

for(I=0;I<=2;I++)

{for(j=0;j<=1;j++)

printf(“%5d”,b[I][j]);

printf(“\n”);}}

53.下面程序可以求出矩阵a的两条对角线上的元素之和。请填空。

Main()

{int a[3][3]={1,3,6,7,9,11,14,15,17},

sum1=0,sum2=0,I,j;

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

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

if(I==j) sum1=sum1+a[I][j];

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

for( ; ;j-)

if((I+j)==2) sum2=sum2+a[I][j];

printf(“sum1=%d,sum2=%d\n”,sum1,sum2);}

59.当从键盘输入18并回车后,下面成学的运行结果main()

是:_________________________ {int I,j,row,col,min;

main() int a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};

{int x,y,I,a[8],j,u,v; min=a[0][0];

scanf(“%d”,&x); for(I=0;I<3;I++)

y=x; I=0; for(j=0;j<4;j++)

if(a[I][J]

{min=a[I][J]; row=I; col=j;}

printf("min=%d,row=%d,col=%d\n",min,row,col);} 60.下面程序的功能是统计年龄在16~31岁之间的学生

人数。请填空:

main()

{int a[30]},n,age,I;

for(I=0;I<30;I++) a[I]=0;

printf(“Enter the number of t he students(<30)\n”);

scanf(“%d”,&n);

printf(“Enter the age of each student:|\n”);

for(I=0;I

{scanf(“%d”,&age); ________________;}

printf(“the result is\n”);

printf(“age number\n”);

for(__________________;I++)

printf(%3d %6d\n”,I,a[I-16]);}

61.下面程序的运行结果是:______________

main()

{int I=1,n=3,j,k=3;

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

while(I<=n&&k>a[I]) I++;

for(j=n-1;j>=I;j--)

a[j+1]=a[j];

a[I]=k;

for(I=0;I<=n;I++)

printf(%3d”,a[I]);}

62.下面程序的运行结果是:_______________

main()

{int num list[]={6,7,8,9},k,j,b,u=0,m=4,w

w=m-1;

while(u<=w)

{j=num_list[u];

k=2;b=1;

while(k

b=j%++k;

if(b) printf(“%d\n”,num_list[u++]);

else {num_list[u]=num_list[w];

num_list[w--]=j;}}}

63.以下程序的功能是??????________________

main()

{int num[10]={10,1,-20,-203,-21,2-2,-2,11,-21}; int sum=0,I;

for(j=0;j<4;j++)

{if(numm[I]>0)

sum=num[I]+sum;}

printf(“sum=%6d”,sum);}

64.先面程序的运行结果是:___________

main()

{int I,j,row,col,min;

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

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

for(I=0;I<10;I++)

65.下面程序的运行结果是:______________________ main()

{int a[6][6],I,J;

for(I=1;j<6;j++)

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

a[I][J]=(i/j)*(j/I);

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

{for(j=1;j<6;j++)

printf("%2d",a[I][j]);

printf("\n");}}

66.字符串 "ab\n\012\\\""的长度是________________

67.下面的程序运行结果是:__________________________

char ch[]="600";

int a,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0'

printf("%d",s);

68.下面的程序段将输出computer,填空: char c[]="It's a computer";

for(I=0;___________________;I++)

{_______________________; Printf("%c",c[J]);} 69.下面程序段的运行结果是:______________________ char x[]="the teacher";

I=0;

while(x[++I]!='\0')

if(x[I-1]=='t') printf("%c",x[I]);

70.下面程序的功能是在三个字符串中找出最小的.填空: #include

#include

main()

{char s[20],st[3][20];

int I;

for(I=0;I<3;I++) gets(str[I]);

strcpy(s,_________________________);

if(strcmp(str[2],s)<0) strcpy(s,str[2]);

printf("%s\n",____________________);}

71.下面程序的运行结果是:_________________________

#include

main()

{int I;

char a[]="Time",b[]="Tom";

for(I=0;a[I])!='\0&&b[I]!='\0';I++)

if(a[I]==b[I])

if(a[I]>='a'&&a[I]<='z') printf("%c",a[I]-32); else printf("%c",a[I]+32);

else printf("*");}

72.下面程序的运行结果是:______________________________

#include

main()

{char a [2][6]={"Sun","Moon"};

int i,j,len[2];

for(I=0;I<2;I++)

{for(j=0;j<6;j++)

if(a[I][j])=='\0') {len[I]=j; break;}

printf("%6s:%d\n",a[I],len[I]);}}

73.下面程序的运行结果是:______________________________

#include

main()

{int I,r;

char sl(80)="bus"; char s2[80]="book";

for(I=r=0);sl[I]!='\0'&&s2[I]!='\0';I++)

it(sl[I]==s2[I]) I++;

clse {r=sl[I]; break;}

printf("%d,r");}

74.下面程序的运行结果是:________________________________

#include

#define LEN 4

main()

{int j,c;

char n[2][LEN+1]={"8980","9198"};

for(j=LEN-1;j>=0:j-)

{c=n[0][j]+n[l][j]-2*'0'; n[0][j]=c%10+'0';}

for(j=0;j<=1;j++) puts(n[j]);}

75.下面程序的运行结果是:_________________________________

#include

main()

{int I=5;

char c[6]="abcd";

do {c[I]=c[I-1];} while(-I>0);

puts(c);}

76.当运行以下程序时,从键盘输入 AabD,则下面程序的

运行结果是:_______________________________________

#include

main()

{char s[80];

int I=0;

gets(s);

while(s[I]!='\0')

{if(s[I]<='z'&&s[I]>='a')

s[I]='z'+'a'-s[I];

I++;}

puts(s);}

77.下面程序的运行结果是:________________________________

#include

main()

{char s[]="ABCCDA";

int k; char c;

for(k=l;(c=s[k])!='\0';k++)

{switch(c)

{case 'A':putchar('%');continue;

case 'B':++k;break;

default:putchar('*');

case 'C':putchar('&');continue;}

putchar('#');}}

函数练习题

1.以下正确的说法是()

A.用户若需调用标准库函数,调用前必须重新定义 C。系统根本不允许用户重新定义标准库函数

B.用户可以重新定义标准库函数,若如此,该函数失去原有含义

D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自去调

2.以下函数的正确定义形式是()

A.double fun(int x,int y) B.double fun(int x;int y) C.double fun(int x,int y); D.double fun(int x,y);

3.以下正确的函数形式是()

A.double fun(int x,int y) B.fun(int x,y) C.fun(x,y) D.double fun(int x,int y)

{z=x+y;return z;} {int z;return z;} {int x,y; double z; z=x+y; retun z;} {double z;z=x+y;return z;} 4.以下正确的说法是()在C语言中:

A.实参和与其对应的形参各占用独立的存储单元 B。实参和与其对应的形参共占用一个存储单元

C.只有当实参和与其对应的形参同名时才共占用存储单元 D。开参是虚拟的,不占用存储单元

5.若调用一个函数,且此函数中没有return语句,则正确的说法是()该函数:

A.没有返回值 B。返回若干个系统默认值 C。能返回一个用户所希望的函数值 D。返回一个确定的值

6.以下说法不正确的是()C语言规定: A。实参可以是常量、变量或表达式

B.形参可以是常量、变量或表达式 C。实参可以为任意类型 D。形参应与其对应的实参类型一致

7.以下说法正确的是()A.定义函数时,形参的类型说明可以放在函数体内 B。return后边的值不能为表达式

C。如果函数值的类型与返回值类型不一致,以函数值类型为准D。如果形参与实参的类型不一致以实参类型为准

8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是()

A。地址传递B。单向值传递C。由实参传给形参,再由形参传回给实参D。由用户指定传递方式9.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()

A。float型B。int型C。long型 D.double型10.C语言规定,函数返回值的类型是由()

A.return语句中的表达式类型所决定 B.调用该函数时的主调函数类型所决定 C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数类型所决定

11.下面函数调用语句含有实参的个数为()

A. 1

B.2

C.4

D.5

12.以下错误的描述是()函数调用可以

A. 出现在执行语句中

B.出现在一个表达式中

C.做为一个函数的实参

D.做为一个函数的形参

13.以下正确的描述是()在C语言程序中

A. 函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可嵌套,但函数的调用可以嵌套

C.函数的定义和函数的调用均不可以嵌套

D.函数的定义和调用均可以嵌套

14.已有以下数组定义和f函数调用的语句,则在f函数的说明中,对形参数组array的错误定义方式为()int a[3][4]; f(a);

A.f(int array[][6])

B.f(int array[3][])

C.f(int array[][4])

D.f(int array[2][5]

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

A.必须在主调函数中说明此数组的大小

B.实参数组类型与形参数组类型可以不匹配

C.在被调函数中,不需要考虑形参数组的大小

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

16.以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,则该变量

A.只在该复合语句中有效

B.在该函数中有效

C.在本程序范围内均有效

D.为非法变量

17.以下不正确的说法为()

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

B.形式参数是局部变量

C.在函数内定义的变量只在函数范围内有效

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

18.以下程序正确运行结果是:()

#define MAX 10 for(I=0;I

int a[MAX],I; sub1()

main( ) {for(I=0;I

{printf(“\n”);sub1( );sub3(a);sub2( );sub3(a);} sub2( ) sub3(int a[])

{int a[MAX],I,max; {int I;

max=5; for(I=0;I

,”a[I]);printf(“\n”);}

A.0 2 4 6 8 10 12 14 16 18

B.0 1 2 3 4

0 1 2 3 4 0 2 4 6 8 10 12 14 16 18

C.0 1 2 3 4 5 6 7 8 9

D. 0 2 4 6 8 10 12 14 16 18

0 1 2 3 4 0 2 4 6 8 10 12 14 16 18

19.以下程序的正确运行结果是()

void num()

{extem int x,y; int a=15;b=10;

x=a-b; y=a+b;}

int x,y;

main()

{int a=7,b=5;

x=a+b; y=a-b; num(); printf(“%d,%d”,x,y);}

A.12,2 B,不正确 C,5,25 D.1,12

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

A.auto

B. static

C. extern

D. register

21.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()

A.extern

B.register

C.auto

D.static

22.以下程序的正确运行结果是()

main()

{int a=2,I;

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

f(int a)

{int b=0; static int c=3;

b++; c++; return(a+b+c);}

A.7 7 7

B.7 10 13

C.7 9 11

D.7 8 9

23.以下程序的正确运行结果是( )

#include

main()

{int k=4,m=1,p;

p=func(k,m); printf(“%d”,p);

p=func(k,m); printf(“%d\n”,p);}

func(int a,int b)

{static int m=0,I=2;

I+=m+1; m=I+a+b; return(m);}

A.8,17

B.8,16

C.8,20

D.8,8

填空题:

24.C语言规定,可执行程序的开始执行点是_____________

25.在C语言中,一个函数一般由两个部分组成,它们是_____________和_____________

26.下面add函数的功能是求两面个参数的和,并将和值返回调用函数。函数中错误的部分是_____________,改正后应是_____________

void add(float a,float b)

{float c; c=a+b; return c;}

27.以下程式序的运行结果是_____________

main()

{int I=2,x=5,j=7;

fun(j,6);

printf(“I=%d;j=%d;x=%d\n”,I,j,x);}

fun(int I,int j)

{int x=7; printf(“I=%d;j=%d;x=%d\n”,I,j,x);} 28.以下程序的运行结果是_____________

main()

{increment();

increment();

increment();}

increment()

{int x=0;x+=1; printf(“%d”,x);}

29.以下程序的运行结果是_____________

main()

{int a=1,b=2,c;

c=max(a,b);printf(“max is %d\n”,c);}

max(int x,int y)

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

30.若输入一个整数不清10,以下程序运行结果是_____________ main()

{int a,e[10],c,I=0;

printf(“输入一个整数: \n”);

scanf(“%d”,&a);

while(a!=0)

{c=sub(a); =a/2; e[I]=c; I++;}

for(;I>0;I--) printf(“%d”,e[I-1]);}

sub(int a)

{int c;

c=a%2; return c;}

31.以下程序的运行结果是_____________

main()

{int x=2,y=3,z=0;

printf(“(1)x=%d y=%d z=%d\n”,x,y,z);

add(x,y,z);

printf(“(3)x=%d y=%d z=%d\n”,x,y,z);}

add(int x,int y, int z)

{z=x+y; x=x*x; y=y*y;

printf(“(2)x=%d y=%d z=%d\n”,x,y,z);}

32.下面程序的运行结果是_____________

main()

{int I=5;

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

sub(int n)

{int a;

if(n==1) return 1;

a=n+sub(n-1);

return(a);}

33.以下程序运行结果是_____________

main()

{int a=1,b=2,c=3;

++a; c+=++b;

{int b=4,c;

c=b*3; a+=c; prin tf(“first:%d,%d,%d\n”,a,b,c); a+=c;

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

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

34.以下程序的运行结果是_____________

int k=1;

main()

{int I=4;

fun(I); printf(“(1)%d,%d\n”,I,K);}

fun(int m)

{m+=k; k+=m;

{char k=’B’;

printf(“(2)%d\n”,k-‘A’);}

printf(“(3)%d,%d\n”,m,k);}

35.以下程序的运行结果是_____________

int x1=30,x2=40;

main()

{int x3=10,x4=20;

sub(x3,x4); sub(x2,x1);

printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2);}

sub(int x,int y)

{x1=x; x=y; y=x1;}

36.以下程序的运行结果是_____________

int I=0;

main()

{int I=5;

reset(I/2); printf(“I=%d\n”,I);

reset(I=I/2); printf(“I=%d\n”,I);

reset(I/2);printf(“I=%dn\”,I);

workover(I); printf(“I=%d\n”,I);}

workover(int I)

{I=(I%I)*((I**)/(2*I)+4);

printf(“I=%d\n”,I);

return(i);}

reset(int I)

{I=I<=2?5:0; return(I);}

37.以下程序的运行结果是_____________

int a=5; int b=7;

main()

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

c=plus(a,b);

printf(“A+B=%d\n”,c);}

plus(int x,int y)

{int z;

z=x+y; return(z);}

38.以下程序的运行结果是_____________

int a=3,b=5;

max(a,b)

{int c; c=a>b?a:b; return(c);}

main()

{int a=8; printf(“%d”,max(a,b));}

39.以下程序的运行结果是_____________

int x;

main()

{x=5; cude(); printf(“%d\n”,x);}

cude()

{x=x*x*x;}

40.以下程序的运行结果是_____________

main()

{incx(); incy(); incx(); incy(); incx(); incy();} incx()

{int x=0; printf(“x=%d\t”,++x);}

incy()

{static int y=0; printf(“\ny=%d\n”,++y);}

41.以下程序的运行结果是_____________

main()

{increment(); increment(); increment();} increment()

{static int x=0;

x+=1; printf(“%d”,x);}

42.以下程序的运行结果是_____________

int n=1;

main()

{static int x=5; int y;

y=n; printf(“MAIN:x=%2d y=%2d n=%2d\n”,x,y,n); func(); pri ntf(“MAIN:x=%2d y=%2d n=%2d\n”,x,y,n);

func();}

func()

{static int x=4; int y=10;

x=x+2; n=n+10; y=y+n

printf(“FUNC:x=%2d y=%2d n=%2d\n”,x,y,n);}

43.以下程序的运行结果是_____________

int fac(int n)

{static int f=1;

f=f*n;

return(f);}

main()

{int I;

for(I=1;I<=5;I++) printf(“%d!=%d\n”,I,fac(I));}编译预处理练习题

1.以下不正确的说法是()A.预自理命令行都必须以“#”开始。B.在程序中凡是以#号开始的语句行都是预处理命令

C.C程序在执行过程中对预处理命令行进行处理。

D.以下是正确的宏定义:#define IBM_PC

2.以下正确的是( )

A.在程序的一行上可以出现多个有效的预处理命令行

B.使用带参的宏时,参数的类型应与宏定义时的一致

C.宏替换不占用运行时间,只占用编译时间

D.在以下定义中C R是称为”宏名”的标识符#define C R 045

3.以下程序运行结果是:()

#define ADD(x) x+x

main()

{int m=1,n=2,k=3;

int sum=ADD(m+n)*k;

printf(“sum=%d”,sum);}

A.sum=9

B.sum=10

C.sum=12 Dsum=18

4.以下程序的运行结果是()

#define MIN(x,y) (x)<(y)?(x):(y)

main()

{int I=10,j=15,k;

k=10*MIN(i,j); prinft(“%d\n”,k);}

A.10

B.15

C.100

D.150

5.在宏定义#define PI 3.14159中,用宏名PI代替一个()

A.常量 B.单精度数 C.双精度数 D.字符串

6.以下有关宏替换的叙述不正确的是()

A.宏替换不占用运行时间。

B.宏名无类型

C. 宏替换只是字符替换。

D.宏名必须用大写字母表示7.C语言的编译系统对宏命令的处理是()

A.在程序运行时进行的。 B.在程序连接时进行的

C.和C程序中的其它语句同时进行编译的

D.在对源程序中其它份正式编译之前进行的

8.若有以下宏定义:

#define N2

#define Y(n)((N+1)*n)

则执行语句Z=2*(N+Y(5));后结果是()

A.语句有误 B.Z=34 C.Z=70 D.Z无定值

9.若有宏定义:#define MOD(x,y)x%y

则执行以下语句后的输出为()

int z,a=15,b=100; z=MOD(b,a); printf(“%d\n”,z++);

A.11

B.10

C.6

D.宏定义不合法

10.以下程序的运行结果是()

#defineMAX(A,B. (A.>(B.?(A.:(B.

#define PRINT(Y) printf(Y=%d\t”,Y)

main()

{int a=1,b=2,c=3,d=4,t;

t=MAX(a+b,c+d); print(t);}

A.y=3

B.存在语法错误

C.Y=7

D.Y=0

11.以下程序的运行结果是()

#defineMUL(x,y)(x)*y

main()

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

c=MUL(a++,b++); prinft(“%d\n”,c);}

A,12 B.15 C.20 D.16

12.对以下程序段:

#defineA3

#defineB(a)((A+1)*a)

x=3*(A+B(7));正确的判断是()

A.程序错误,不许嵌套宏定义 B.x=93

C.X=21 D.程序错误,宏定义不许有参数

13.以下程序中,第一个输出值是(),第二个输出值是()

值是()

#define M3

#define N(M+1)

#define NNN*N/2

main()

{prinft(“%d\n”,NN);printf(“%d”,5*NN);}

A.3

B.4

C.6

D.8

A.17

B.18

C.30

D.40

14.以下程序的输出结果是()

#definePT 5.5

#defineS(x)PT*x*x

main()

{int a=1,b=2;printf(“%4.1f\n”,S(a+b));}

A.12.0

B.9.5

C.12.5

D.33.5

15.在“文件包含”预处理语句的使用形式中,当#inlcude后面的文件名用“”(双引号)括起时,寻找被包含文件的方式是()

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在目录搜索,再按系统设定的标准方式搜索。

C.仅仅搜索源程序所在目录。

D.仅仅搜索当前目录

16.请读程序:

#define LETTER 0

mian()

{char str [20]=”C Language”,c;

INT I=0;

While((c=str[I]!=’\0’)

[I++;

#if LETTER

if (c>=’a’&&c<=’z’ c=c-32;

#else

if (c>=’A’&&c<=’Z’) c=c+32;

#endif

printf(“%c”,c);}}

以上程序的运行结果是()

A.C Language B.c language C.CLANGUAGE D.Clanguage

17.以下正确的描述是()

A.C语言的预处理功能是指完成宏替换和包含文件的调用。

B.预处理指令只能位于C源程序的首部

C.凡是C源程序中行首以“#”标控制行都是预处理指令。

D.C语言的编译预处理就是对源程序进行初步的语法检查。

指针练习题

1.以下程序的运行结果是( )

sub(int x, int y, int *z)

{*z=y-x;}

main()

{int a,b,c;

Sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

Printf(“%4b,%4d,%4d\n”,a,b,c);}

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7

2.执行以下程序后,a的值为( )b的值为( )

main()

{int a,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(-*p1)/(*p2)+7;

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

A.-1

B.1

C.0

D.4 A.5 B.6 C.7 D.10 3.下面程序应能对两个整型变量的值进行交换以下正确的说法是( )

main()

{int a=10,b=20;

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

swap(&a,&b);

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

swap(int p,int q)

{int t; t=p; p=q; q=t;}

A.程序完全正确

B.程序有错,只要将语句swap(&a,*b);中的参数

改成a,b即可

C.程序有错,只要将swap()函数中的形参p和q 以及t 均定义为指针(执行语句都有不变)即可

D.以下说法都不对

4.有四组对指针变量进行操作的语句,以下判断正确的选项是( )

A. int p,q; q=p; int a,*p,*q; p=q=&a;

B. int a,*p,*q; q=&a; p=*q; int a=20,*p; p=a;

C. int a=b=0,*p; P&a; b=*p;

int a=20,*p,*q=&a; p=q;

D. int a=20,*p,*q+&a; p=q; int p,*q;

A.正确(1) 不正确(2)(3)(4)

B.正确(1)(4) 不正确(2)(3)

C.正确(3) 不正确(1)(2)(4)

D.以上结论都不正确

5.以下程序中调用scanf 函数给变量a输入值

的方法是错误的,其错误原因是( )

main()

{int*p, q, a, b;,};

p=&a;

printf(“input a:”);

scanf(“%d”,*p);

……}

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

6 以下程序有错误,错误原因是( )

main()

{int*p,I; char*q,ch;

p=&I; q=&ch; *p=40; *p=*q;……}

A. p和q的类型不一致,不能执行*p+*q语句

B.*p中存放的是地址值,因此不能执行*p=40语句。

C. q没有指向具体的存储单元,所以*q没有实际意义。

D. q虽然指向具体的存储单元,但该单元中没有确

定的值,所以不能执行*p=*q;语句

7.已有定义int k=2; int*ptr1,*ptr2;且ptr1和ptr2均已

main() 指向变量k,下面不能正确执行赋值语句的是( ) A. k=*ptr1+*ptr2; B.ptr2=k;

C.ptr1=ptr2;

D. k=*ptr1*(*ptr2);

8.变量的指针,其含义是指该变量的( )

A.值

B.地址

C.名

D.一个标志

9.若有语句int*point,a=4和point=&a;下面均代表地址的一组选项是( )

A. a,point,*&a

B.&*a,&a,*point

C. &point,&point,&a

D.&a,&*point,point

10.若有说明:int *p,m=5,n;以下正确的程序段是( )

A. p=&n;scanf(“%d”,&p);

B. p=&n; scanf(“%d”,*p);

C. scanf(“%d”,&n);*p=n;

D. p=&n; *p=m;

11.若有说明:int p1,p2,m=5,n;以下均是正确的赋值语句的选项是( )

A. p1=&m; P2=&p1;

B.p1=&m; p2=&n; *p1=*p2

C. p1=&m; p2=p1;Dp1=&m; p2=p1

12已有变量定义和函数调用语句: int a=25;

print_value(&a); 下面函数的正确输出结果是( ) void print_value(int *x)

{printf(“%d\n”,++*x);}

A. 23

B. 24

C. 25

D. 26

13.下面判断正确的是( )

A. char*a=”china”;等价于char *a; *a=”china”;

B. char str[10]={“china”};等价于char str[10];

C. char*s=”china”;等价于char str[10]

D. char c[4]=”abc”,d[4]=”abc”

等价于char c[4]=b[4]=”abc”;

14.设char*s=”\ta\017bc”;则指针变量s指向的字符串所占的字节数是 ( )

A.9

B.5

C.6

D.7

15.下面能正确进行字符串赋值的操作的是( )

A. char s[5]={“ABCDE”};

B. char s[5]={‘A’,’B’,’C’,’D’,’E’,};

C. char*s; s=”ABCDE”;

D.chars;scanf(“%s”,s);

16.下面程序段的运行结果是( )

char*s=”abcde”; s+=2; printf(“%d”,s);

A.cde

B.字符’c’

C.字符’c’的地址

D.无确定结果

17.设有以下程序段:char s[]=”china”; char*p; p=s; 则下列叙述正确的是( )

A.s和p完全相同D.*p与s[0]相等

B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等

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

char*format=”%s, a=%d, b=%d\n”;

int a=1,b=10; a+=b;

printf(“format,” a+=b,”, a, b);

A. for,”a+=”,ab

B.format,”a+=b”

C.a+=b,a=11,b=10

D.以下结果都不对

19.以下正确的程序段是( )

A.char str[20]; scanf(“%s”,&str);

B.char*p; scanf(“%s”,p);

C.char str[20];Scanf(“%s”,&str[2]);

D.char str[20], *p=str;

scanf(“%s”,p[2]);

20.下面程序段的运行结果是( )

char str[]=”ABC”, *p=str;

printf(“%d\n”,*(9+3));

A. 67

B. 0

C.字符’C’的地址

D.字符’C’

21.下面程序段运行结果是( )

char a[]=”language”,*p;

p=a;

while(*p!=’u’) {pirntf(“%c”,*p-32);p++;}

A. LANGUAGE

B. language

C. LANG

D. language

22.下面说明书不正确的是( )

A.char a[10]=”china”;

B.char a[10],*p=a;p=”china”;

C.char*a;a=”china”;

D.char a[10],*p; p=a=”china”;

23. 若有说明语句

char a[]=”It is mine”; char*p=”It is mine”; 则以下不正确的叙述是( ) A.a+1表示的是字符t的地址

B.p指向另外的字符串时,字符串的长度不受限制

C.p变量中存放的地址值可以改变

D.a中只能存放10个字符

24.若已定义char s[10];则在下面表达式中不表示s[1]的地址是( )

A.s+1

B.s++

C.&s[0]+1

D. &s[1]

25 下面程序段的运行结果是( )

char s[6]; s=”abcd” printf(“\”%s\”\n”,s); A”abcd” B”abcd “ C\”abcd\” D编译出错

26当运行以下程序时,从键盘输入Happy! ,则下面的程序运行结果是()

#include

#include

main()

{char str [10],*p=str;

gest(p); printf(“%d\n”,stre(p));}

stre(char str[])

{int num=0;

while(*(str+num)!=’0’)

num++;

return(num);}

A.7

B.6

C.5

D.10

27.下面程序的运行结果是( )

#include

main()

{static char a[ ]=“Language”,b[ ]=”programe”; char p1, p2; int k;

p1=a; p2=b; printf(" %c”,*(p1+k));}

A. gae

B. ga

C. Language

D.有语法错误

28.下面程序运行结果( )

#include

main()

{int a=28,b;

char s[10],*p;

p=s;

do{b=a%16;

if(b<10) *p=b+48;

else *pb+55;

p++;

a=a/5;}while(a>0);

*p=’\0’;

puts(s);}

A.10

B. C2

C.C51

D.\0

29.下面程序的运行结果是( )

#include

void delch(char *s)

{int I,j;

char *a;

a=s;

for(I=0,j=0;a[I]!=’\0’;I++)

if(a[I]>=’0’&&a[I]<=’9’){s[j]=a[I];j++;}

s[j]=’\0’;}

main()

{char*item=”a34bc”;

delch(item);

printf("\n%s",item);}

A.abc

B.34 c.a34 D.a34bc

30.下面程序运行结果是( )

#include

#include

main()

{char*s1=”AbDeG”; char*s2”AbdEg”;

s1+=2; s2+=2;

printf(“%d\n”,strcmp(sl,s2));}

A.正数

B.负数

C.零

D.不确定的值

31.下面的程序的运行结果是( )

#include

#include

fun(char*s)

{char a[7]; s=a; strcpy(a,”look”);}

main()

{char *p; fun(p); puts(p);}

A.look□□□

B.look

C.look□□

D.不确定的值

32.下面的程序的运行结果是( )

#include

main()

{char *p,s[ ]=”ABCDEFG”;

for(p=s; *p!=’\0’;)

{printf(“%s\n”,p);

p++;

else break;k}}

A.ABCDEFG ABCDE ABC A

B.ABCDEFG BCDEF CDE D

C.A C E G

D.ABCDEFG CDEFG EFG G

33.下面和序的运行结果是( )

#include

#incude

main()

{char* p1,*p2,str[50]=”abc”;

p1=”abc”; p2=”abc”;

strcpy(str+1,strcat(p1,p2));

printf(“%s\n”,str);}

A.abcabcabc

B.bcabcabc

C.aabcabc

D.cabcabc

34.下面程序的运行结果是( )

#include

main()

{char str[]=”cdalb”;

abc(str); puts(str);}

abc(char*p)

{int I,j;

for(I=0,j=0;*(p+I)!=’\0’;I++)

if(*(p+I)>=’d’){*(p+j)=*(p+I); j++} C.p=b[I]; *(p+j)=’\0’;}

A.dalb

B.cd

C.dl

D.c

35.若有以下定义,则对a数组元素的正确引用是

inta[5],*p=a;

A.*&a[5]

B.a+2

C.*(p+5)

D.*(a+2) 正确操作是()36.若有定义:int a[2][3];则对a数组的第I行,第j 列元素值的正确引用是()

A.*(*a+I)+j)

B.(a+I)[j] C*(a+I+j) D.*(a+I)+j

37.若有以下定义和语句,则对a数组的地址的正确引用为()

inta[2][3],(*P)[3]; p=a;

A.*(p+2)

B.p[2]

C.p[1]+1

D.(p+1)+2

38.若有以下定义和语句,则对a数组元素的正确引用为()

int a[2][3],(*p)[3]; p=a;

A.(p+1)[0]

B.*(*(p+2)+1)

C.*(p[1]+1)

D.p[1]+2

39.若有定义:int a[5];则a数组中首元素日地址可以表示为()

A.&a

B.a+1

C.a

D.&a[1]

40.若有定义:int(*p)[4];则标识符p( )

A.是一个指向整形变量的指针

B.是一个指针数组名

C.是一个指针,它指向一个含有四个整形元素的一维数组

D.定义不合法

41.若有以下定义和赋值语句,则以s数组的第I行第j 列元素地址的合法引用为()

int s[2][3]={0},(*p)[3]; p=s;

A.*(*p+I)+j)

B.*(p[I]+j)

C.(p+I)+j

D.(*(p+I))[j]

42.以下与int*q[5];等价的定义语句是()

A.intq[5];

B.int*q;

C.int*(q[5]);

D.int(*q)[5]; 43.设有以下程序段:

char

str[4][10]={“frist”,”second”,”third”,”for urth”},*strp[4];

int n;

for(n=0;n<4;n++) strp[n]=str[n];

若k为int型变量且0<=k<4,则对字符串的不正确引用是( )

A. strp

B. str[k]

C.strp[k]

D.*strp

44若有以下定义,则*(p+5)表示( )

int a[10],*p=a;

A.元素a[5]的地址

B.元素a[5]的值

C.元素a[6]的地址

D.元素a[6]的值

45.若有定义:int*p[4]:则标识符p( )

A.是一个指向整形变量的指针

B.是一个指针数组名

C,是一个指针,它指向一个含有四个整形元素的一维数组

D.说明不合法

46.以下正确的说明语句是( )

A.int*b[]={1,3,5,7,9};

B.int

a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

C.int a[]{1,3,5,7,9};

D.int a[3][4],(*num)[4];num[1]=&a[1][3];

47.若有以下定义,且0<=I<4,则不正确的赋值语句是( ) int b[4][6],*p,*q[4];

A.q[I]=b[I];

B.p=b;

C.p=b[I];

D.q[I]=&b[0][0];

48.若有以下定义,则p+5表示( )

int a[10],*p=a;

A.元素a[5]的地址

B.元素a[5]的值

C.元素a[6]的地址

D.元素a[6]的值

49.以下选项中,对指针变量p的不正确操作是()

A.inta[5],*p;p=&a; C.inta[5];int*p=a=1000

B.int a[5],*P;p=a; D.inta[5]; int*p1,*p2=a *p1=*p2;

50.若有以下定义,且0<=I<5,则对a数组元素的非法引用是()

int a[5],*p=a;

A.a[1]

B.*(a+1)

C.*(p+1)

D.*(&a+I)

51.若有以下定义,则数值不为3的表达式是()

int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;

A.x[3]

B.p1=x+3,*p1++

C.p1=x+2,*(p1++)

D.p1=x+2,*++p1

52.阅读以下程序:

main()

{int a[10]={2,4,6,8,10,12,14,16,18,20},*p;

p=a;

printf(“%x\n”,p);

printf(“%x\n”,p+9);}

若第一个printf语句输出的是ffca,则第二个printf语句输出的是()

A.ffdd

B.ffdc

C.ffde

D.ffcd

53.设有以下定义:

char *cc[2]={“1234”,”5678”};

则正确的叙述是()

https://www.wendangku.net/doc/4010253948.html,数组的两个元素中各自存放了字符串“1234”和“5678”的首地址

https://www.wendangku.net/doc/4010253948.html,数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

https://www.wendangku.net/doc/4010253948.html,是指针变量,它指向含有两个数组元素的字符型一维数组

https://www.wendangku.net/doc/4010253948.html,数组元素的值分别是“1234”和“5678”

54、若有以下定义

int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}

int(*p)[3]=x;

则能够正确表示数组元素x[1][2]的表达式是()

A *((*p+1)[2])

B (*p+1)+2

C *(*p+5)

D *(*p+1)+2)

55 下面程序的运行结果是()

main()

{int x[5]={2,4,6,8,10},*p,**pp;

p=x;

pp=&p;

printf(“%d”,*(p+1));

print f(“%3d\n,”**pp);}

A 4 4

B 2 4

C 2 2 D, 4 6

56,若有说明:

char

*language[]={“fortran,””basic,””pascal,”ja va,””c”};则表达式language[1]>*language[3]比较的是()

A 字符f和字符p

B 字符窜basic和字符窜java

C 字符b和字符j

D 字符窜fortran和字符窜pascal

57.若有说明

char

language[]={“fortran,””basic,”,”pascal,””java,””c”}则language[2]的值是

A一个字符B一个地址C一个字符窜D一个不定直

58. 若有说明

char

*languiage

[]={“fortran,””basic,”pascal,”java,”c”}则以下不正确的是()

https://www.wendangku.net/doc/4010253948.html,nguage+2表示字符窜”pascal”的首地址

https://www.wendangku.net/doc/4010253948.html,nguage[2]的值是字母p

https://www.wendangku.net/doc/4010253948.html,nguage是一个字符行指针数组,它包含5个元素每个元素都是一个指向字符窜变量的指针

https://www.wendangku.net/doc/4010253948.html,nguage是一个字符型指针数组,它包含5个元素其初直分别是:fortran,basic,pascal,java,c,

59.语句int(“ptr)9()的含义是()

A.ptr是指一维数组的指针变量

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr 是一个函数名,该函数的反回值是指向int型数据的指针

60.若有函数max(a,b)并且已使函数指针变量p指向max,当调用该函数时正确的调用方法是()

A.(*p)max(,b)

B.pmax(a,b)

C.(p)(a,b)

D.*p(a,b)

61.已有函数max(a,b),为了让函数指针变量p指向函数max正确的赋值方法是()

A.p=max

B.*p=max

C.p=max(a,b)

D.*p=max(a,b)

62.已有定义int(*p)( )指针p可以()

A.代表函数的返回值

B.指向函数的入口地址

C.表示函数的类型

D.表示函数返回值的类型

63.若有以下说明和语句:

char *language[]={“fortran,”basic,”pascal,”java,c ,}

char**p;

q=language+2

则语句printf(“%o/n,”*p);( )

A.输出的是language[2]元素的地址

B.输出的是字符窜pascal

C.输出的是language[2]元素的值,它是字符窜pascal 的首地址

D.格式说明不正确,无法得到确定的输出

64.若要对a进行++运算,则a应具有下面说明()

A.int a[3][2]

B.char *a[]{“12”,ab}

C.char(*a)[3]

D.int b[10],*a=b;

结构体与共用体练习题

1.已知学生记录描述为

struct student

{int no;

char name[20];

char sex;

struct

{int year;

int month;

int day;}birth;};

struct student s;

设变量s中的“生日”应该是“1984年11月11日”,下

列对“生日”的正确赋值方式是( )

A. year=1984;

B.birth.year=1984;

month=11; birth.month=11;

day=11; birth.day=11;

C.s.year=1984;

D.s.birth.year=1984;

s.month=11; s.birth.month=11;

s.day=11; s.birth.day=11;

2.当说明一个结构体变量时系统分配给它的内存是( )

A.各成员所需内存的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构中最后一个成员所需内存量

3.设有以下说明语句

struct stu

{int a;float b;}stutype;则以下叙述不正确的是( )

A. struct 是结构体类型的关键字

B. struct stu 是用户定义的结构体类型

C. stutype 是用户定义的结构体类型名

D. a 和 b 都是结构体成员名

4.C语言结构体类型变量在程序执行期间( )

A. 所有成员一直驻留在内存中

B. 只有一个成员驻留在内存中

C. 部分成员驻留在内存中

D. 没有成员驻留在内存中

5.在16位机动IBM-PC机上使用C语言,若有如下定义:struct data

{int I; char ch; double f;}b;

则结构体变量b占用内存的字节数是( )

A.1

B.2

C.8

D.11

6.以下程序的运行结果是( )

main()

{struct date

《C语言程序设计》第1章 C语言概述练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。 A) 有零个或多个输入B) 有零个或多个输出C) 有穷性D) 可行性 二、填空题 1.汇编语言属于面向( 面向机器的 )语言,高级语言属于(面向问题的)语言。 2.用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方式 执行,也可以通过编译程序一次翻译产生(目标)程序,然后执行。

函数练习题(C语言)带答案

C语言函数练习题 一、选择题 1. 一个完整的C源程序是【】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【】。 A)C语言程序将从源程序中第一个函数开始执行 B )可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)m ain可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)m ain函数必须出现在所有函数之后 D)m ain函数必须出现在固定位置 5. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【】 A)float B)long C)int D)double 6. 以下关于函数叙述中,错误的是【】。 A)函数未被调用时,系统将不为形参分配内存单元 B)实参与形参的个数应相等,且实参与形参的类型必须对应一致 C)当形参是变量时,实参可以是常量、变量或表达式 D )形参可以是常量、变量或表达式 7. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。 A)实参与其对应的形参共占存储单元 B)只有当实参与其对应的形参同名时才共占存储单元 C)实参与对应的形参分别占用不同的存储单元 D)实参将数据传递给形参后,立即释放原先占用的存储单元 9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【】。 A)实参将其地址传递给形参,并释放原先占用的存储单元 B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参 C)实参将其值传递给形参,调用结束时形参再将其值回传给实参

第一章C语言概述习题附答案

第一章C语言概述 一、单选题 1. C语言程序的执行,总是起始于()。C A.程序中的第一条可执行语句 B.程序中的第一个函数 C.main函数 D.包含文件中的第一个函数 分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。本题正确答案为C。 2、C语言程序的基本单位是()。C A)程序行B)语句C)函数D)字符 3、C语言中规定:在一个源程序中main函数的位置()。C A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 4、以下述叙正确的是()。C A.在C程序中,main函数可有可无 B. C程序的每行中只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 5、能将高级语言编写的源程序转换为目标程序的是()。C A.链接程序 B.网络程序 C.编译程序 D.WORD字处理程序 6、下列说法中正确的是()。C A)C程序书写时,不区分大小写字母 B)C程序书写时,一行只能写一个语句 C)C程序书写时,一个语句可分成几行书写 D)C程序书写时每行必须有行号 分析:C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。本题正确答案为C。 7、下面对C语言特点,不正确描述的是()。C A)C语言兼有高级语言和低级语言的双重特点,执行效率高 B)C语言既可以用来编写应用程序,又可以用来编写系统软件 C)C语言的可移植性较差 D)C语言是一种结构式模块化程序设计语言 分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。本题正确答案为C。 8、C语言源程序的最小单位是()。D A)程序行B)语句C)函数D)字符 分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。本题正确答案为D。 9.计算机内部运算使用的数是()。C A)十进制数B)十六进制数C)二进制数D)八进制数

C语言基础练习100题(含答案)

C语言基础练习100题(含答案) 欧阳学文 雷柳青编排 1、下面程序的输出是________ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是________. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C语言字符常量是__________. A) '\t' B) "A" C) 65 D) A 4、字符(char)型数据在微机内存中的存储形式是____. A) 反码B) 补码C) EBCDIC码D) ASCII码 5、设int a=12,则执行完语句a+=a=a*a 后,a的值是________ A) 552 B) 264 C) 144 D) 264 6、执行下面程序中的输出语句后,输出结果是______. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 7、下面程序的输出是__________. #include void main() {int x=023; printf("%d\n",x); } A) 17 B) 18 C) 23 D) 24 8、下面程序的输出是___________. #include void main() {char ch1,ch2; ch1='A'+'5''3'; ch2='A'+'6''3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 9、以下程序的输出结果是________. #include void main() { int x=10,y=10; printf("%d %d\n",x,y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 10、若x和y都是int型变量,x=100,y=200,且有下面的程序片段: printf("%d",(x,y)); 上面程序片段的输出结果是_______.

第1章C语言概述

第1章C语言概述 C语言是国际上广泛流行的、很有发展前途的高级程序设计语言,它既可以用来编写系统软件,又可以用来编写应用软件。C语言也是大学生学习程序设计选用最多的语言。本章主要介绍C语言的发展历史、C语言的特点、C程序的结构和C程序的上机步骤。通过本章的学习,读者应重点掌握C语言的特点、C程序的结构和上机运行C程序的方法。 1.1 C语言的发展和特点 自从计算机诞生以来,为了更好地进行软件的设计,各种高级程序设计语言也在不断地发展、进步和完善。C语言就是其中最优秀的程序设计语言之一。 1.1.1 C语言的发展过程 C语言是目前世界上最流行、使用最广泛的高级程序设计语言。在设计操作系统等系统软件和需要对硬件进行操作时,使用C语言编程明显优于其他高级语言,许多大型应用软件和系统软件都是用C语言编写的。 C语言的起源可以追溯到ALGOL 60。1963年英国的剑桥大学在ALGOL 60的基础上推出了CPL语言,但是CPL语言难以实现。1967年英国剑桥大学的Matin Richards对CPL 语言作了简化,推出了BCPL语言。1970年美国贝尔实验室的Ken Thompson以BCPL语言为基础,又作了进一步的简化,设计出了很简单且接近硬件的B语言,并用B语言写了第一个UNIX操作系统,在DEC PDP-7型计算机上实现。1971年在DEC PDP-11上实现了B语言。1972年由美国的Dennis M.Ritchie在B语言的基础上设计出了C语言,并首次在UNIX操作系统的DEC PDP-11计算机上使用。 为了推广UNIX操作系统,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。1978年Brian W.Kernighian和Dennis M.Ritchie 出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。 随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,1983年美国国家标准研究所(ANSI)为C语言制定了第一个ANSI标准,称为ANSI C。1987年美国国家标准研究所

c语言练习题带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 详见教材P52~53.

C语言试题-选择题及答案

C语言试题 ★第1 题: 阅读程序,选择程序的运行结果___A___。 #include main() { int x; x=try(5); printf(“%d\n”, x); } try(int n) { if(n>0) return(n*try(n-2)); else return(1); } A. 15 B. 120 C. 1 D. 前面3个答案均是错误的 第2 题: 在下列结论中,只有一个是正确的,它是___A___。 A. 递归函数中的形式参数是自动变量 B. 递归函数中的形式参数是外部变量 C. 递归函数中的形式参数是静态变量 D. 递归函数中的形式参数可以根据需要自己定义存储类型 ★第3 题: 阅读程序,选择程序的输出结果__A___。 #include f(int x, int y) { return(y-x); } main() { int (*g)(int,int); int a=5, b=6, c=2; g=f; c=(*g)(a,b); printf(“%d\n”, c); } A. 1 B. 2 C. 3 D. 前面3个答案均是错误的 第4 题: 阅读程序,选择程序的输出结果__D___。 #include

char *p=”abcdefghijklmnopq”; main() { while(*p++!=?e?) ; printf(“%c\n”, *p); } A. c B. d C. e D. f ★第6 题: 阅读程序,选择程序的输出结果___D___。 #include void prtv(int *x) { printf(”%d\n”, ++*x); } main() { int a=25; prtv(&a); } A. 23 B. 24 C. 25 D. 26 第7 题: 阅读程序,选择程序的输出结果___B___。 #include main() { static char a[ ]= ”language”, b[]=”program”; char *ptr1=a, *ptr2=b; int k; for(k=0; k<7; k++) if(*(ptr1+k)==*(ptr2+k)) printf(”%c”, *(ptr1+k)); } A. gae B. ga C. language D. 有语法错误 ★第8 题: 函数调用strcat(strcpy(str1, str2), str3)的功能是__C___。 A. 将串str1复制到串str2中,然后再连接到str3之后 B. 将串str1连接到串str2之后,再复制到str3之中 C. 将串str2复制到串str1中,然后再将串str3连接到串str1之后

C语言试题选择题及答案

★第1 题: 阅读程序,选择程序的运行结果___A___。 #include main() { int x; x=try(5); printf(“%d\n”, x); } try(int n) { if(n>0) return(n*try(n-2)); else return(1); } A. 15 B. 120 C. 1 D. 前面3个答案均是错误的 第2 题: 在下列结论中,只有一个是正确的,它是___A___。 A. 递归函数中的形式参数是自动变量 B. 递归函数中的形式参数是外部变量 C. 递归函数中的形式参数是静态变量 D. 递归函数中的形式参数可以根据需要自己定义存储类型 ★第3 题: 阅读程序,选择程序的输出结果__A___。 #include f(int x, int y) { return(y-x); } main() { int (*g)(int,int); int a=5, b=6, c=2;

g=f; c=(*g)(a,b); printf(“%d\n”, c); } A. 1 B. 2 C. 3 D. 前面3个答案均是错误的 第4 题: 阅读程序,选择程序的输出结果__D___。#include char *p=”abcdefghijklmnopq”; main() { while(*p++!=’e’) ; printf(“%c\n”, *p); } A. c B. d C. e D. f ★第6 题: 阅读程序,选择程序的输出结果___D___。#include void prtv(int *x) { printf(”%d\n”, ++*x); } main() { int a=25; prtv(&a); } A. 23

(完整版)C语言程序设计选择题库及答案

单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题, 应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodb start$it line# pow ??? aBc 3pai His.age while

【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义

(完整版)C语言选择题(附答案)

第一单元C语言概述 一、选择题 1、C语言中主函数的个数为(A)个。 A)1 B)2 C)无穷个D)任意个 2、以下关于C语言描述错误的是(D)。 A)一个C程序总是从main函数开始执行T B)每个语句和数据声明的最后必须有一个分号T C)C语言的注释符是以“/*”开始并以“*/”结束的T D)一个C程序可以包含多个main函数F 3、C 语言源程序文件后缀为(C )。 A).EXE B).OBJ C).C D).ASM 4、C语言是由(C )组成的。 A)子程序B)主程序与子程序C)函数D)过程 5、C语言属于(B )语言 A)机器语言B)汇编语言C)高级语言D)面向对象语言 第二单元C语言基础 一、选择题 1、C语言中普通整型变量int在内存中占(B )字节。 A)1 B)2 C)3 D)4 2、下列不是C语言基本数据类型的是(A )。 A)字符型B) 整型 C) 浮点型D) 结构体 3、有关自增、自减运算,以下只有(D )是正确的。 A) ---f B) ++78 C) a—b++ D) d++ 4、已知A=7.5,B=2,C=3.6,表达式(A>B && C>A) || (AB)的值是(A )。 A)0 B)10 C)1 D)5

5、若有x=1,y=2,z=3,则表达式(x=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 7、判断整型变量digit是否为数字的正确表达式是(C )。 A) ‘0’<=ch<=‘9’B) (ch>=‘0’)&(ch<=‘9’) C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch) 8、一个C程序的执行是从(A )。 A)本程序的main函数开始,到main函数结柬 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 9、在以下标识符中,合法的是(C ) A)if B)0xy C)_xy D)case 10、C语言中各种类型的数据其实决定了占用内存的字节数。float占(C )。 A)一字节B)二字节C)四字节D)八字节 11、下列各选项中,(A )是有效的标识符。 A)ab B)3day C)day-3 D)#abc 12、以下叙述正确的是(C ) A) 在C程序中,每行只能写一条语句 B) 若a是实型变量,C程序中不允许a=10这种赋值。 C) 在C程序中,%是只能用于整数运算的运算符 D) 在C程序中,无论是整数还是实数,没有什么区别 13、有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( B )。 A)132↙B)1,3,2↙ C)a=1 b=3 c=2↙D)a=1,b=3,c=2↙ 14、设整型变量a为5,使b不为2的表达式是( C )。 A)b = a/2 B)b = 6-(--a) C)b=a%2 D)b=a>3?2:1

C语言教案(上):第一章c语言概述(高教版).doc

课题第一章C语言概述 教学目的1、掌握上机步骤 2、能正确调试程序 教材分析教学重点计算机运行时的过程教学难点上机步骤 课时安排 2 教学方法讲授与演示法相结合 讨论法、实践法、任 务驱动 教具计算机、投影仪 教学内容及过程设计一新课引入 有了新的程序,如何实现程序的结果验证? 二讲授新课 一)、上机步骤(上机环境:Turbo C3.0) 1.进入环境 2.编辑源程序 3.保存源程序 4.编译源程序 5.执行程序,查看结果 6. 退出C环境 (1) 进入Turbo C++ 3.0集成环境 ①在DOS环境下 C:\TC3.0>tc ↙ ②在Windows环境下 找到可执行文件tc.exe,执行该文件。

主菜单:11个菜单项: File Edit Search Run Compile Debug Project Options Window Help 在编辑(EDIT) 状态下光标表示当前进行编辑的位置,在此位置可以进行插入、删除或修改,直到自已满意为止。 保存:在编辑(EDIT) 状态下光标表示当前进行编辑的位置,在此位置可以进行插入、删除或修改,直到自已满意为止。 (3) 对源程序进行编译 选择“Compile”(或“Alt+F9”)对源程序进行编译。 (4) 将目标程序进行连接 选择菜单“Compile”→“Link”,如果不出现错误, 会得到一个后缀为.exe的可执行文件 (5) 执行程序 选菜单“Run”→“Run”( 或按“Ctrl+F9”键)。 (6) 退出Turbo C++ 3.0环境 选择“File”→“Quit”。 三课堂小结 1、C语言的构成要素,main函数在程序中的作用 2、上机操作的过程 备注:安排上机实验,熟悉TC环境及简单的C语言程序构成 上机内容为:见上机实训教案1求3个数中较大者。 另例1、图案程序共两个。

C语言选择题(含答案)

C语言选择题(含答案) 选择题 1.以下叙述正确的是_____。 A) 在C程序中,main函数必须位于程序的最前面。 B) C语言本身没有输入输出语句。 C) C程序的每行只能写一条语句。 D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 2.下面四个选项中,均是不合法的用户标识符的选项是。 A) A B) float C) b-a D) _123 P_0 1a0 goto temp do _A int INT 3、下列四个选项中都是合法的转义字符的 A) ‘\’’‘\\’‘\n’B) ‘\’‘\017’‘\”’ C) ‘\018’‘\f’‘xab’D) ‘\\0’‘\101’‘x1f’ 4、设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是: A)7 B)8 C)6 D)2 5、若有代数式,则不正确的C语言表达式是: A) a/b/c*e*3 B) 3*a*e/b/c C) 3*a*e/b*c D) a*e/c/b*3 6、若希望当A的值为奇数时,表达式的值为”真”, A的值为偶数时,表达式的值为”假”。则以 下不能满足要求的表达式是_________。 A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2 7、以下程序的运行结果是 : main() { int m=6;

if(m++> 6) printf(" %d\n",m); e1se printf("%d\n",--m ); } A)4 B)5 C) 7 D) 6 8、当a=1,b=3,c=5,d=4,执行完下面一段程序后x 的值是 : if(a正确的输出结果为 main() { int x,y,z scanf("%d%d%d",&x,&y,&z ); printf(“x+y+z=%d\n” ,x+y+z);。 } A)x+y+z=48 B)x+y+z=35 C)x+y+z=35 D)不确定值 10、已知各变量的类型说明如下 int k,a,b; unsigned long w= 5; double x=1.42; 则以下不符合C语言语法的表达式是 : A) x%(-3) B) w+=-2

C语言期末选择题及答案

第二学期《C 语言程序设计》模考 总共68 题共100分 帐号:2013040431 姓名:刘园 答题时间:2015-7-3 8:26:55/2015-7-3 8:40:12 通过分数:60 考生得分 :1 全部显示 错题显示

是( )。(1分) A.'cd' B.0.1e+6 C."\a" D.'\011' 标准答案:A 考生答案: 本题得分:0 试题解析: 单选题4749单选类 4.以下选项中不合法的标识符是( )。(1分) A.print B.FOR C.&a D._00 标准答案:C 考生答案: 本题得分:0 试题解析: 单选题4773单选类 5.设有语句char a='\72';则变量a( )。(1分) A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法 标准答案:A 考生答案:B

A.10<x<20 B.x>10‖x<20 C.x>10&&<20 D.(x>10)&&(x<20) 标准答案:D 考生答案: 本题得分:0 试题解析: 单选题4820单选类 12.若定义:int a,b;,则表达式 (a=2,b=5,a++,b++,a+b)的值为()。(1分) A.7 B.8 C.9 D.10 标准答案:C 考生答案: 本题得分:0 试题解析: 单选题4837单选类 13.若有定义:int c1=1,c2=2;,则表达式1.0/c2*c1的值是()。(1分) A.0 B.0.5 C.1 D.2 标准答案:B 考生答案:

试题解析: 单选题4890单选类 14.已有定义int x; f1oat y;且执行 scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678(回车),则x的值为().(1分) A.12345 B.123 C.45 D.345 标准答案:B 考生答案: 本题得分:0 试题解析: 单选题4882单选类 15. 以下程序的输出结果是() #include<stdio.h> int main() { int k=17; printf(“%d,%o,%x\n”k,k,k); return 0; } (1分) A.17,021,0x11 B.17,17,17 C.17,0x11,021 D.17,21,11 标准答案:D 考生答案: 本题得分:0

第一章C语言概述

第一章C语言概述 一、选择题: 1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束 2、在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 4、一个C 语言程序是由( B )。 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 5、下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数

D. 程序可以从任何非主函数开始执行 6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题: 1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C 语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。 4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。 5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名 是 .exe 。 6、C 语言的标识符只能由字母、数字和下划线三种字符组成。 第三章数据类型、运算符和表达式 一、选择题: 1、以下选项中,不正确的 C 语言浮点型常量是( C )。

c语言选择题及答案

1﹑以下选项中不合法的用户标识符是( C )。 A)_123 B)PP C)A$ D)Dim 2﹑C语言提供的合法数据关键字是( A )。 A)float B) Sagned C) Integer D) ing 3﹑判断char型变量c1是否为小写字母的正确表达式为 ( D )。 A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z') C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z') 4﹑C语言可执行程序开始执行点为( C ). A)程序中第一条可执行语句 B) 程序中第一个函数 C)程序中的main函数D) 包含文件中的第一个函数 5﹑以下说法中正确的是( C ). A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main函数中定义 C)C语言程序总是从main函数开始执行 D) C语言程序中,main函数必须放在程序的开始部分 6﹑设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是( C )。 A)if(a>b) c=a,a=b,b=c; B)if(a>b) {c=a,a=b,b=c;} C)if(a>b) c=a;a=b;b=c; D)if(a>b) {c=a;a=b;b=c;} 7﹑若有说明和语句: int a=5,b; b=a++; 此处变量b的值是( C )。 A)7 B)6 C)5 D) 8﹑以下程序的输出结果是( D )。 int x=10,y=10; printf("%d %d\n",x--,--y); A) 10 10 B) 9 9 C) 9 10 D) 10 9 9﹑C语言用( C )表示逻辑“真”值。 A)true B)t或y C)非零整数值 D)整数0 10﹑指出下面正确的输入语句( B )。 A) scanf("a=b=%d",&a,&b) ; B) scanf("%d,%d",&a,&b) ; C) scanf("%c",c) ; D) scanf("% f%d\n",&f) ; 11﹑若x=5,y=3 则y*=x+5; y的值为( D )。 A) 10 B) 20 C) 15 D) 30 12﹑设整型变量n的值为2,执行语句"n+=n-=n*n;"后,n的值是( C )。 A)0 B)4 C) - 4 D) 2 13﹑以下程序的运行结果是( D )。 void main() { int a=65; char c=’A’; printf(“%x,%d”,a,c); }

C语言-基本选择题及答案解析

计算机程序设计基础(C语言) 单项选择练习题 说明:带*号的对非信息学院的同学不作要求。 一、基本概念 1. C语言程序是由 C 构成的。 A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数2.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 3.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 5、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 6. 下列方法中错误的是(D)。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 7. 下列说法错误的是:(B) A.C程序运行步骤是编辑、编译、连接、执行。 B.C语言的变量名必须用小写,常量用大写。 C.C语言的三种基本结构是顺序、选择、循环。 D. C程序一定由函数构成的。 8.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行

C语言练习题及参考答案

练习题1及参考答案 1. 单项选择题 (1)以下并非C语言的特点的是。 A. C语言简洁和紧凑 B. 能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D. C语言移植性好 【答】B (2)一个C程序的执行是从。 A. main()函数开始,直到main()函数结束 B. 第一个函数开始,直到最后一个函数结束 C. 第一个语句开始,直到最后一个语句结束 D. main()函数开始,直到最后一个函数结束 【答】A (3)在C程序中,main()的位置。 A. 必须作为第一个函数 B. 必须作为最后一个函数 C. 可以任意 D. 必须放在它所调用的函数之后 【答】C (4)一个C程序是由。 A. 一个主程序和若干子程序组成 B. 一个或多个函数组成 C. 若干过程组成 D. 若干子程序组成 【答】B (5)下列说法正确的是。 A. 在执行C程序时不是从main()函数开始的 B. C程序书写格式限制严格,一行内必须写一个语句 C. C程序书写格式比较自由,一个语句可以分行写在多行上 D. C程序书写格式严格要求一行内必须写一个语句,并要求行号 【答】C 2. 填空题 (1)一个C源程序至少有①个main()函数和②个其他函数。【答】①一②若干 (2)任何C语句必须以结束。 【答】分号 (3)C语言源程序的基本单位是。 【答】函数 (4)C编译程序的功能是。

【答】将C源程序编译成目标代码

练习题2及参考答案 1. 单项选择题 (1)以下字符串为标识符的是。 A. _MY B. 2_2222 C. short D. LINE 5 【答】A (2)下列符号可以作为变量名的是。 A. +a B. *p C. _DAY D. next day 【答】C (3)设c是字符变量,则以下表达式正确的是。 A. c=666 B. c='c' C. c="c" D. c="abcd" 【答】B (4)23+'m'+3.6-123.45/'b'的结果是型数据。 A. char B. double C. int D. long int 【答】3.6和123.45均为double型,运算结果也是double型。本题答案为B。 (5)若变量已正确赋值,以下符合C语言语法的表达式是。 A. a=a+7; B. a=7+b+c,a++ C. int(12.3%4) D. a=a+7=c+b 【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。本题答案为B。 (6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是。 A. x=(x=1+2,x*2) B. x=y>2?6:5 C. x=9-(--y)-(--y) D. x=y*(int)(4.8/2) 【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)(4.8/2)=y*2=6。本题答案为C。 (7)若定义 int m=7,n=12; 则能得到值为3的表达式是。 A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) 【答】A、B、C、D选项各表达式的值分别是0、2、2、3。本题答案为D。 (8)以下程序的运行结果是。

C语言试题-选择题及答案

阅读程序,选择程序的运行结果___A___。 #include main() { int x; x=try(5); printf(“%d\n”, x); } try(int n) { if(n>0) return(n*try(n-2)); else return(1); } A. 15 B. 120 C. 1 D. 前面3个答案均是错误的 第2 题: 在下列结论中,只有一个是正确的,它是___A___。 A. 递归函数中的形式参数是自动变量 B. 递归函数中的形式参数是外部变量 C. 递归函数中的形式参数是静态变量 D. 递归函数中的形式参数可以根据需要自己定义存储类型 ★第3 题: 阅读程序,选择程序的输出结果__A___。 #include f(int x, int y) { return(y-x); } main() { int (*g)(int,int); int a=5, b=6, c=2; g=f; c=(*g)(a,b); printf(“%d\n”, c); } A. 1 B. 2 C. 3 D. 前面3个答案均是错误的 第4 题: 阅读程序,选择程序的输出结果__D___。 #include char *p=”abcdefghijklmnopq”; main() { while(*p++!=’e’) ; printf(“%c\n”, *p); } A. c B. d C. e D. f

阅读程序,选择程序的输出结果___D___。 #include void prtv(int *x) { printf(”%d\n”, ++*x); } main() { int a=25; prtv(&a); } A. 23 B. 24 C. 25 D. 26 第7 题: 阅读程序,选择程序的输出结果___B___。 #include main() { static char a[ ]= ”language”, b[]=”program”; char *ptr1=a, *ptr2=b; int k; for(k=0; k<7; k++) if(*(ptr1+k)==*(ptr2+k)) printf(”%c”, *(ptr1+k)); } A. gae B. ga C. language D. 有语法错误 ★第8 题: 函数调用strcat(strcpy(str1, str2), str3)的功能是__C___。 A. 将串str1复制到串str2中,然后再连接到str3之后 B. 将串str1连接到串str2之后,再复制到str3之中 C. 将串str2复制到串str1中,然后再将串str3连接到串str1之后 D. 将串str2复制到串str1中,再将串str1连接到str3之后 ★第9 题: 设有以下程序段,则在main函数中使用语句__D___是无意义的。main() { int min(); int a, b, c, (*p)(); p=min; … } min(x, y) int x, y; { … } A. printf(”%d\n”, min(a,b)); B. c=min(a, b); C. c=(*p)(a,b);

相关文档
相关文档 最新文档