C语言程序设计习题集答案.docx

上传人:b****4 文档编号:3733206 上传时间:2022-11-25 格式:DOCX 页数:69 大小:56.99KB
下载 相关 举报
C语言程序设计习题集答案.docx_第1页
第1页 / 共69页
C语言程序设计习题集答案.docx_第2页
第2页 / 共69页
C语言程序设计习题集答案.docx_第3页
第3页 / 共69页
C语言程序设计习题集答案.docx_第4页
第4页 / 共69页
C语言程序设计习题集答案.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

C语言程序设计习题集答案.docx

《C语言程序设计习题集答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集答案.docx(69页珍藏版)》请在冰豆网上搜索。

C语言程序设计习题集答案.docx

C语言程序设计习题集答案

 

《高级语言程序设计》

习题集

(答案可能有错,仅供参考!

 

淮南师范学院

计算机与信息工程系

2013年5月

 

选择及填空题

1.C语言程序编译过程中产生的文件有(B)。

A.索引文件和文本文件两种B.目标文件和可执行文件

C.二进制文件一种D.ASCII码文件和二进制文件两种

2.C语言源程序的基本单位是(A)。

A.函数B.标识符C.表达式D.语句

3.C程序的运行需要经过编译和连接两步进行。

4.C语言的编译单位是文件。

5.C语言源程序的基本单位是(A)。

A.函数B.标识符C.表达式D.语句

6.以下叙述正确的是(C)。

A)C语言比其他语言高级

B)C语言可以不用编译就能被计算机识别执行

C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D)C语言出现的最晚、具有其他语言的一切优点

7.在一个C语言程序中(B)。

A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现

C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置

8.C++语言中工程文件的扩展名是(B)。

A..cppB..prjC..cD..obj

9.C文件的扩展名是(C)。

(A).cpp(B).prj(C).c(D).txt

1.符合结构化原则的三种基本控制结构是:

选择结构、循环结构和顺序结构。

2.C语言中用于结构化程序设计的三种基本结构是()。

A)顺序结构、选择结构、循环结构B)if、switch、break

C)for、while、do-whileD)if、for、continue

1.若有以下定义,则能使值为3的表达式是(D)。

intk=7,x=12;

A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)

2.以下运算符中,优先级最高的运算符是(D)。

A.=B.!

=C.*(乘号)D.()

3.经过以下语句定义后,表达式z+=x>y?

++x:

++y的值为(C)。

intx=1,y=2,z=3;

A.2B.3C.6D.5

4.下列字符序列中,不可用作C语言标识符的是(B)。

A.b70B.#abC.symbolD.a_1

5.以下不正确的叙述是(D)。

A.在C程序中所用的变量必须先定义后使用

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

C.若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变

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

6.能正确表示逻辑关系:

"a≥10或a≤0"的C语言表达式是(D)。

A.a>=10ora<=0B.a>=0|a<=10C.a>=10&&a<=0D.a>=10||a<=0

7.C语言的注释定界符是(D)。

A.{}B.[]C.**D./**/

8.以下运算符中,优先级最高的运算符是(D)。

A.=B.!

=C.*(乘号)D.()

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

A.A%2==1B.!

(A%2==0)C.!

(A%2)D.A%2

10.设int类型的数据长度为2字节,则该类型数据的取值范围是(D)。

A.0至65536B.0至65535C.-32767至32768D.-32768至32767

11.在C语言中逻辑值“真”是用(B)表示的。

()

A.预定义为真值的宏B.非零值C.正数D.非零整数

12.若定义:

inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为(D)。

A.确定值B.a的地址C.512D.511

13.设在tc2.0中有整型变量x,y,z均为3,表达式(x++)+(y++)+(z++)的值是(D)。

A.6B.7C.8D.9

14.设有语句scanf(“%d,%d”,&m,&n);要使m、n的值依次为2,3,正确的输入是(B)。

A.2⊔3↙B.2,3↙C.2;3D.2↙

15.已知inta=5,b=7,c=3;则逻辑表达式a

A.1B.0C.3D.4

16.以下定义语句中正确的是(C)。

A)chara='A'b='B';B)floata=b=10.0;C)inta=10,*b=&a;D)float*a,b=&a;

17.设a=6,b=4,则表达式b*=a+3的值为(D)。

A)3B)18C)27D)36

18.有如下程序段,其输出结果是(B)。

inta=3;

floatb=15.6,f=1.5;

printf(“%d”,a+(int)b/2+(int)f%3);

A)10B)11C)12D)13

19.已知inta=5,b=7,c=3;则逻辑表达式a

A)1B)=0C)3D)4

20.若x、i、j和k都是int型变量,计算x=(i=4,j=16,k=32)表达式后,x的值为(C)。

(A)4(B)16

(C)32(D)52

21.执行以下语句后,a,b的值分别为(C)。

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

(A)2,2   (B)1,1

(C)2,1  (D)1,2

22.若有定义:

inta=8,b=5,c;执行语句c=a/b+0.4;后c的值为(B)。

(A)1.4(B)1

(C)2.0(D)2

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

A.intB.floatC.doubleD.不确定

24.在C语言中,char型数据在内存中的存储形式是(A)。

A.补码B.反码C.源码D.ASCII码

25.判断char型变量cl是否为小写字母的正确表达式为(D)。

A.’a’<=c1<=’z’B.(c1>=a)&&(c1<=z)

C.(‘a’>=c1)(‘z’<=c1)D.(c1>=’a’)&&(c1<=’z’)

26.以下不能定义为用户标识符的是(C)。

A.MAINB._HJC.208ongD.LINE12

27.设有intx,y;以下语句判断x和y是否相等,正确的说法是该语句(B)。

if(x=y)printf("xisequaltoy.");

A.语法错B.不能判断x和y是否相等

C.编译出错D.能判断x和y是否相等

28.以下各项是错误的整型常量的是(B)。

A.-0xcdfB.018C.0xeD.011

29.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值分别是(C)。

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

(A)x=10,y=20,z=30(B)x=20,y=30,z=10

(C)x=20,y=30,z=30(D)x=20,y=30,z=20

30.设x=3,y=-4,z=5,则表达式!

(x>y)+(y!

=z)||(x+y)&&(y=z)的值是`。

31.为表示关系x≥y≥z,正确的C语言逻辑、关系表达式为x>=y&&y>=z。

32.有inta=3,b=4,c=5,x,y;,则以下表达式的值为0

!

(x=a)&&(y=b)&&c

33.在C语言的表达式中,x=x+5用复合运算符可以写成x+=5。

34.已知赋值语句zhang.year=1985;可判断zhang是结构体类型的变量;

35.若a是int型变量,且a的初值为6,则计算表达式“a+=a-=a*a”后a的值为-60

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

37.若x和n均是int型变量,且x的初值为12,n的初值为5,则执行表达式“x%=(n%=2)”后,x的值为0。

38.在C语言中,表示逻辑"真"值用非0值.

39.与if(x==0)等价的表达式写法写法是!

x。

40.若s是int型变量,且s=6,则表达式“s%2+(s+1)%2”的值为1。

41若x是int型变量,则执行表达式“x=(a=4,6*2)”后,x的值为12。

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

1.若有以下程序段(n所赋的是八进制数):

intm=32767,n=0327;

printf("%d,%o\n",m,n);

执行后输出结果是(A)。

A)32767,327B)32767,0327C)32767,777D)32767,0777

2.若有说明语句:

inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。

A)scanf("%d%d%d",&a,&b,d);B)scanf("%d%d%d",&a,&b,&d);

C)scanf("%d%d%d",a,b,d);D)scanf("%d%d%d",a,b,*d);

3.若变量x、y已定义为int类型且X的值为99,y的值为9,请将输出语句

printf(_”x/y=%d”____,x/y);补充完整,使其输出的计算结果形式为:

x/y=11。

4.在scanf函数中,变量前加&表示变量的地址。

5.以下程序的运行结果是computer,□□com。

□表示空格

main()

{printf("%s,%5.3s","computer","computer");}

6.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是5.0,4,c=3。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c);

1.C语言中,while和do…while循环的主要区别是(B)。

A.while的循环控制条件比do…while的循环控制条件严格

B.do…while的循环体至少无条件执行一次

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

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

2.现已定义整型变量inti=1;执行循环语句while(i++<5);后,i的值为(C)。

A)1B)5C)6D)以上三个答案均不正确

3.执行语句:

for(i=1;i<=9;i++)后;变量i的值是(A)。

A.10B.9C.不定 D.11

4.以下描述正确的是(C)。

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

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

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

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

5.对do...while语句错误的描述是(C)。

A.可构成多重循环结构B.循环次数不可能为0

C.循环次数可能为0D.先执行后判断。

6.执行下面的程序段后,k值是36。

k=1;n=263;

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

1.若定义数组并初始化inta[10]={1,2,3,4},以下语句中(D)成立。

A.若引用a[10],编译时报错

B.若引用a[10],连接时报错

C.若引用a[10],运行时出错

D.若引用a[10],系统不报错

2.下列选项中正确的语句组是(D)。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beijing";

D.char*s;s="Beijing";

3.以下对二维数组a的正确说明是(C)。

A.inta[3][]B.floata(3,4)C.doublea[1][4]D.floata(3)(4)

4.C标准库函数中,字符串处理函数的原形在(C)头文件中。

A.stdio.hB.math.hC.string.hD.ctype.h

5.以下一维数组a的正确定义是(D)。

A.inta(10);B.intn=10,a[n];

C.intn;D.#defineN10

scanf(“%d”,&n);inta[N];

inta[n];

6.有数组定义:

chararray[]=”Computer”;则数组array所占的存储空间为(C)。

A.7个字节B.8个字节C.9个字节D.10个字节

7.有数组定义:

chararray[]=”Computer”;则数组array所占的存储空间为(C)。

A)7个字节B)8个字节C)9个字节D)10个字节

8.以下不能正确定义二维数组的选项是(D)。

A)inta[2][2]={{1},{2}};B)inta[][2]={1,2,3,4};

C)inta[2][2]={{1},2,3};D)inta[2][]={{1,2},{3,4}};

9.数组定义为:

inta[4][5];引用“a[1]+3”表示的是(A)。

(A)a数组第2行第4列元素的地址(B)a数组第2行第4列元素的值

(C)a数组第4行的首地址(D)a数组第1行第3个元素的地址

10.判断字符串s1是否大于字符串s2,应当使用的表达式是(D)。

(A)if(s1>s2)(B)if(a==b)

(C)if(strcpy(s2,s1)>0)(D)if(stcmp(s1,s2)>0)

11.字符串"a"在内存中占据的字节个数为(C)。

A.0B.1C.2D.3

12.若二维数组a有m列,则在a[i][j]前面的元素个数为(B)。

A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1

13.下面正确的数据声明的是(D)。

A.chara[][5]={“math”,“phy”,“chemi”};

B.intb[3][3]={{1,2,3},4,5,6,7,{8,9}};

C.floatc[sizeof(sin

(1))]={1,‘\’};

D.charch[][10]={“Beijing”,“Nanjing”},

14.以下是正确的字符常量是(B)。

A."c"B.'\\'C.'W1'D."\32a"

15.若二维数组a有m列,则在a[i][j]前面的元素个数为(B)。

Aj*m+iBi*m+jCi*m+j-1Di*m+j+1

16.在C语言中,二维数组元素的内存中的存放顺序是行序优先。

17.下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。

main()

{chara[]="students",t;inti,j;

for(i=1;i<7;i+=2)

for(j=i+2;j<8;j+=2)

if(a[i]>a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

puts(a);

}

1.在C语言中以下正确的说法是(A)。

A.实参和与其对应的形参各占用独立储单元

B.实参和与其对应的形参共占用一个单元

C.只有当实参和与其对应的形参同名共占用存储单元

D.形参是虚拟的,不占用存储单元

2.以下正确的函数形式是(D)。

A.doublefun(intx,inty){z=x+y;returnz;}

B.fun(intx,y){intz;returnz;}

C.fun(x,y){intx,y;doublez;z=x+y;returnz;}

D.doublefun(intx,inty){doublez;z=x+y;returnz;}

3.定义C语言函数时,形参可以是(B)。

A.常量B.变量C.表达式D.宏定义

4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。

A.float型B.int型C.long型D.double型

5.以下说法中正确的是(C)。

A.C语言程序总是从第一个定义的函数开始执行

B.在C语言程序中,要调用的函数必须在main函数中定义

C.C语言程序总是从main函数开始执行

D.C语言程序中,main函数必须放在程序的开始部分

6.为了提高程序的运行速度,在函数中对于整型或指针可以使用的变量类型是(B)。

A.autoB.registerC.staticD.extern

7.数组名作为实参传递给被调用的函数时,形参获得的是(C)。

A.该数组第一个元素的值B.该数组所有元素的值

C.该数组第一个元素的首地址D.该数组所有元素的首地址

8.以下函数test返回值类型为(A)。

test(intx)

{printf(“%f\n”,(float)x);

}

A)intB)floatC)voidD)不确定或错误

9.若函数中有定义语句:

intk;,则下列说法正确的是(B)。

A.系统将自动给k赋初值0B.这时k中的值不确定

C.系统将自动给k赋初值-1D.这时k中无任何值

10.下面函数

f(doublex)

{printf(“%6d”,x);}的类型为(C)。

A.实型B.void类型C.int类型D.均不正确

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

A.必须在主调函数中说明此数组的大小

B.实参数组类型与形参数组类型可以不匹配

C.在被调用函数中,要设置形参数组的大小

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

12.在C语言中,以下说法中正确的是(A)。

A.实参与其对应的形参各占用独立的存储单元

B.实参与其对应的形参占用同一个存储单元

C.只有当实参与形参同名时才占用同一个存储单元

D.实参占用存储单元,但形参是虚拟的,不占用存储单元

13.若用数组名作为函数调用的实参,传递给形参的是(A)。

(A)数组的首地址  (B)数组的第一个元素

(C)数组中全部元素的值(D)数组元素的个数

14.C语言中,简单变量做实参时,它和对应的形参之间的数据传递方式是(B)。

(A)地址传递  (B)单向值传递

(C)由实参传给形参,再由形参传递给实参

(D)同用户指定传递方式

15.下列叙述中错误的是(B)。

A.引用函数说明中指定的形参名,不必与函数定义中对应的形参名相同。

B.不能用extern定义一个外部变量、数组。

C.无论在函数外还是在函数内部引用自定义的函数,都可以不写extern关键字。

D.用extern说明引用一个外部数组时,可以不给出数组大小。

16.以下正确的函数定义形式是(C)。

A.doublefun(intx,inty)B.doublefun(intx;inty)

C.doublefun(intx,inty);D.doublefun(intx,y);

17.若用数组名作为函数调用的实参,传递给形参的是(C)。

(A)数组的第一个元数;(B)数组中全部元素的值;

(C)数组的首地址;(D)数组元素的个数。

18.已知函数定义为:

intstat(int a,float*p)

{……………}

则此函数的两个参数类型分别是整型、指向浮点数的指针类型。

19.在TC中,printf()函数输出表列的求值顺序是从右向左。

20.在C语言中,函数默认是全局的。

(填“全局的”或“局部的”)

1.设有宏定义:

#defineIsDIV(k,n)((k%n==1)?

l:

0)且变量m已正确定义并赋值,则宏调用:

IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是(D)。

A.判断m是否能被5或者7整除

B.判断m是否能被5和7整除

C.判断m被5或者7整除是否余l

D.判断m被5和7整除是否都余1

1.有以下程序

#include

voidf(int*p,int*q);

main()

{intm=1,n=2,*r=&m;

f(r,&n);

printf("%d,%d",m,n);

}

voidf(int*p,int*q)

{p=p+1;

*q=*q+1;}

程序运行后的输出结果是(A)。

A.1,3B.2,3C.1,4D.l,2

2.对于类型相同的指针变量,不能进行(B)运算。

A.-B.+C.=D.>

3.若有inta[10]={1,2,3,4,5,,6,7,8,9,10};*p=a;则值为9的表达式是(B)。

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

4.变量p为指针变量,若p=&a,下列说法不正确的是(D)。

A.&*p==&aB.*&a==aC.(*p)++==a++D.*(++p)==++a

5.设有语句”inta[]={1,3,5,7,9},*p=&a[0];”则值为7的表达式是(C)。

A.*p+3B.*p+4C.*(p+3)D.*(p+4)

6.已知inta[2][3]={{1,3,5},{2,4,6}};则*(*(a+1)+2)的值是(A)。

A.6B.3C.5D.4

7.已知inta[2][3]={{1,3,5},{2,4,6}};则*(*(a+1)+2)的值是(A)。

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

8.已知i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1