c语言课后习题答案_第1页
c语言课后习题答案_第2页
c语言课后习题答案_第3页
c语言课后习题答案_第4页
c语言课后习题答案_第5页
免费预览已结束,剩余33页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章数据类型、运算符与表达式题答案一、选择题1. 以下表示正确常量的是()。(A)E-5(B)1E5.1(C)a12(D)32766L【答案】D2.若有定义:inta=1,b=2,c=3,d=4,x=5,y=6;则表达式(x=ab)&(y=cd)(D)6的值为(A)0【答案】A(B)1(C)53.以下()是正确的字符常量。是正确的字符常量。(A)c【答案】C(B)(C)W(D)32a4.以下()是不正确的字符串常量。是不止确的字符串常量。(A)abc【答案】A(B)1212(C)0(D)5.以下是正确的浮点数的是()。(A)e3【答案】B(B).62(C)2e4.5(D)123)。6. 若有

2、定义:inta=2;则正确的赋值表达式是()。(A)a-=(a*3)(B)double(-a)(C)a*3(D)a*4=3【答案】A运行后的7. 若有定义:intx=1111,y=222,z=33;则语句printf(%4d+%3d+%2d,x,y,z);输出结果为()。(A)111122233(B)1111,222,33(C)111122233(D)1111+222+33【答案】D8. 已有如下定义和输入语句:inta,b;scanf(%d,%d,&a,&b);若要求a、b的值分别为11和22,正确的数据输入是哪一个?()(A)1122(B)11,22(C)a=11,b=22(D)11;22

3、B9. 已有如下定义和输入语句,inta;charc1,c2;scanf(%d%c%c,&a,&c1,&c2);若要求a、cl、c2的值分别为40、A和A,正确的数据输入是()。(A)40AA(B)40AA(C)40AA(D)40,A,A【答案】Aa的值为()。(C) 2(D)3)。(B)字符本身(D) 十六进制代码值10. 语句a=(3/4)+3%2;运行后,(A)0(B)1【答案】B11. char型变量存放的是(A)ASCII代码值(C)十进制代码值【答案】A12. 在下列运算符中,优先级最高的运算符是()。(A)=j|ij的值为()。(A)1(B)变量i的值(C)0(D)变量j的值【答

4、案】A15. 若希望当a的值为奇数时,表达式的值为真,a的值为偶数时,表达式的值为假。则不能满足要求的表达式是()。(A)a%2=1(B)!(a%2=0)(C)!(a%2)(D)a%2【答案】C16. 若有定义:intx=3,y=4,z=5;则值为0的表达式是()。(A)x&y(B)x=y(C)x|y+z&y-z(D)!(xy)&!z|1)【答案】D17. 若有定义:floatx=3.5;intz=8;则表达式x+z%3/4的值为()。(A)3.75(B)3.5(C)3(D)4【答案】B18. 已知chara=R;则正确的赋值表达式是()。(A)a=(a+)%4(B)a+2=3(C)a+=25

5、6-(D)a=078【答案】A19. 若有定义:intb=7;floata=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是()。(A)2.5(B)3.5(C)4.5【答案】C20. 若已定义:inti=3,k;则语句k=(i-)+(i-);运行后k的值为()。(A)4(B)5(C)6(D)7【答案】C21. 若已定义:inta=5;floatb=63.72;以下语句中能输出正确值的是(A)printf(%d%d,a,b);(B)printf(%d%.2f,a,b);(C)printf(%.2f%.2f,a,b);(D)printf(%.2f%d,a,b);【答案

6、】B22. C语言中,能正确表示条件10Vx20的逻辑表达式是()。(A)10Vx10|x10&10)&(x20)【答案】D23. 若表达式!x的值为1,则以下哪个表达式的值为1()。(A)x=0(B)x=1(C)x=!1(D)x!=0【答案】A(D)4,3,4运行后,x,c的值分别是(D)4,3)24. 语句x=(y=3,b=+y);运行后,x、y、b的值依次为()。(A)4,4,3(B)3,3,3(C)4,4,4【答案】C25. 若有定义:intx,c;则语句x=(c=3,c+1);(A)3,3(B)4,4(C)3,3【答案】D26. 语句a=(6/8)+6%5;运行后,a的值为(A)1(

7、B)2(C)1.75(D)【答案】A27. 若有定义:intx,y;则表达式(x=2,y=5,x*2,y+,x+y)的值是()。(A)7(B)8(C)9(D)10【答案】B28. 对代数式(4ad)/(bc),不正确的C语言表达式是()。(A)a/b/c*d*4(B)4*a*d/b/c(C)4*a*d/b*c(D)a*d/c/b*4【答案】C29. 若x和y为整数,以下表达式中不能正确表示数学关系|x-y|10的是()。(A)abs(x-y)-10&(x-y)10(C)!(x-y)10(D)(x-y)*(x-y)100【答案】C30. 若有以下程序段,则z的二进制值是()。intx=3,y=6

8、,z;z=xAyb;运行后c的值为。【答案】06. 若有定义:inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是。【答案】7. 已知doublea=5.2;贝语句a+=a-=(a=4)*(a=3);运行后a的值为【答案】8. 若有定义:intx,y;则表达式(x=2,y=5,x+,x+y+)的值是。【答案】89. 若有定义:intm=3,n=5;则表达式(m+1,n+1,(-m)+(n-)的值是。【答案】710. 若有定义:intx=3,y=4;则表达式!x|y的值为。【答案】111. 若有定义:inta=5,b=2,

9、c=1;则表达式a-bc|b=c的值是。【答案】012. 若有定义:inta=2,b=2,c=2;则语句+a|+b&+c;运行后b的值为【答案】213. 以下程序段中,要将a的值的低4位取反,b的值应取。unsignedchara=0x39,b;a=aAb;【答案】15或0xf14. pow(3.0,2.0)的函数值是。【答案】15. 若有定义:intk,i=3,j=3;则表达式k=(+i)*(j-)的值是【答案】12三、程序设计题编写程序,从键盘输入大写字母,用小写字母输出。【参考答案】voidmaincharc1;printf(“inputauppercase:”);scanf(“%c”,

10、&c1);c1=c1+32;/*在ASCII表中,小写字母的ASCII值比对应的大写字母大printf(%cn,c1);2. 编写程序,从键盘输入一个矩形的长度和宽度,输出面积和周长。【参考答案】voidmainfloatlen,wid,size;/*len,wid,size分别表示矩形的长、宽、面积printf(inputlength:);scanf(%f,&len);printf(inputwidth:);scanf(%f,&wid);size=len*wid;printf(sizeoftherectangleis:%fn,size);3. 编写一个程序,从键盘输入华氏温度,将其转换成摄氏

11、温度值后输出。转换的公式为:【参考答案】voidmainfloatc,f;printf(inputFahrenheittemperaturef:);scanf(%f,&f);c=(f-32)/1.8;printf(Centigradetemperaturecis:%fn,c);32*/*/4.编写程序,输入两个字符,利用条件运算符,输出其中较小字符的ASCII码值。【参考答案】voidmain()charc1,c2;inti;printf(inputtwoletters:);scanf(%c,%c,&c1,&c2);/*注意:输入的两个字符之间要用逗号隔开*/i=c1=0&chi=9;i+=2

12、)s=10*s+chi-0;printf(%dn,s);A、1B、1256C、12ab56D、12568、定义如下变量和数组:则下面语句的输出结果是()intk;inta33=1,2,3,4,5,6,7,8,9,;for(k=0;k3;k+)printf(%d,ak2-k);A、357B、369C、159D、1479、下面程序段的运行结果是()charc5=a,b,0,c,0;printf(%s,c);A、abB、abC、abcD、abc10、若有说明:inta3=1,2,3,4,5,6,7;则a数组第一维的大小是()A、2B、3C、4D、无确定值11、下面程序的运行结果是(main()int

13、a6,i;for(i=1;i3)%5;printf(%2d,ai);A、-40404B、-4040312、下面程序的运行结果是()main()inta66,i,j;for(i=1;i6;i+)for(j=1;j6;j+)aij=(i/j)*(j/i);for(i=1;i6;i+)for(j=1;js2)B、if(strcmp(s1,s2)C、if(strcmp(s2,s1)0)D、if(strcmp(s1,s2)0)15、下面程序(每行程序前面的数字表示行号:()1main()23inta3=3*0;4inti;5for(i=0;i3;i+)scanf(%d”,&ai);6for(i=1;i3

14、;i+)a0=a0+ai;7printf(%dn,a0);8A、第3行有错误B、第7行有错误C、第5行有错误D、没有错误16、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。横线处应填入()main()chars80,c1,c2=;inti=0,num=0;gets(s);while(si!=0)c1=si;if(i=0)c2=;elsec2=si-1;if(1)num+;i+;printf(%d,num);A、c1=&c2=B、c1!=&c2=C、c1=&c2!=D、c1!=&c2!=17、有字符数组a80和b80,则正确的输出语句是()A、puts(a,b);

15、B、printf(%s,%s,a,b);C、putchar(a,b);D、puts(a),puts(b);18、下面描述正确的是()A、两个字符串所包含的字符个数相同时,才能比较字符串。B、字符个数多的字符串比字符个数少的字符串大C、字符串“STOP”与“STOP”相等。D、字符串“That”小于字符串“The”19、有两个字符数组a、b,则以下正确的输入语句是()A、gets(a,b);B、scanf(%s%s,a,b);C、scanf(%s%s,&a,&b);D、gets(a),gets(b);20以下不正确的定义语句是()Adoublex5=2.0,4.0,6.0,8.0,1.0;Cch

16、arc1=1,2,3,4,5;Binty5=0,1,2,3,4,5,6Dcharc2=x10,xa,x8;21调用函数时,若实参是一个数组名,则向函数对应的形参传送的是()A数组的长度C、数组第一个元素的值22下面程序段的运行结果是()chars6;s=”abcpdrin”tf(;A“abcd”B”abcd“23 (多项选择)以下不能对二维数组Ainta2=1,0,1,5,2,3;Cinta24=1,2,3,4,5,6;24 (多项选择)若有说明:inta34A.a24Ba1,3B数组的首地址D整个数组元素的值%s”n”,s);C”abcd”nD编译出错a进行正确初始化的语句是()B.inta

17、3=1,2,3,4,5,6;Dinta3=1,0,1,1,1;;则对a数组元素不能正确引用是()Ca1+10Da(2)(1)25(多项选择)若有说明“staticinta34=0;”则下面正确的叙述是()A、只有元素:a0可得到初值0B、此说明语句不正确C、数组a中各元素都可得到初值,但其值不一定为0D数组a中每个元素均可得到初值026以下对一维整型数组的正确说明是()Ainta(1);Bintn=10,an;Cintn;scanf(“d”,&n);intan;D#defineSIZE10intaSIZE;27有以下程序,其输出结果是()voidswap1(intc)intt;t=c0;c0=

18、c1;c1=t;voidswap2(intc0,intc1)intt;t=c0;c0=c1;c1=t;main()inta2=3,5,b2=3,5;swap1(a);swap2(b0,b1);printf(“%dd%dn”,a0,a1,b0,b1);A、 5353B、 5335C、 3535D、 355328、以下程序执行后的输出结果是)intf(intb4)inti,j,s=0;for(j=0;j2)i=3-j;s+=bij;returns;main()int44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0;printf(“n%”d,f(a);A、12B、11C、18D

19、、1629、执行下列程序后输出的结果是)inta33=1,2,3;intb33=1,2,3;main()printf(%dn,a10+b00);A、0B、1C、2D、330、以下程序运行后,输出结果是)main()inty=18,i=O,j,a8;doai=y%2;i+;y=y2;while(y=1);for(j=i-1;j=0;j-)printf(%壮j);printf(f;)A、1000B、10010C、00110D、10100二、填空题1、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。填空时数组元素请用数组表示方法)main()inta10=1,2,3,4

20、,5,6,7,8,9,10;intk,s,i;floatave;for(k=s=i=0;i10;i+)if(ai%2!=0)1;s+=2;k+;if(k!=0)ave=s/k;printf(%d,%f,k,ave);2、下面程序的运行结果是()main()intnum_list=6,7,8,9;intk,j,b,u=0,m=4,w;w=m-1;while(u=w)j=num_listu;k=2;b=1;while(k0;i-)ai=ai-1;a0=t;for(i=0;i=a&ai=z)printf(%c,ai-32);elseprintf(%c,ai+32);elseprintf(*);5、下

21、面程序的运行结果是)main()inti=1;n=3,j,k=3;inta5=1,4,5;while(iai)i+;for(j=n-1;j=i;j-)aj+1=aj;ai=k;for(i=0;i=1);for(j=i-1;j=0;j-)printf(%d,aj);7、下面程序的运行结果是)main()inta10=1,2,3,4,5,6,7,8,9,10;intk,s,i;floatave;for(k=s=i=0;i10;i+)if(ai%2=0)continue;s+=ai;k+;if(k!=0)ave=s/k;printf(Thenumberis:%d,Theaverageis:%fn,k

22、,ave);8、若有以下输入(表示回车),则下面程序的运行结果是()31232221130main()main()inta4,x,i;for(i=1;i0)ax+=1;scanf(%d,&x);for(i=1;i=3;i+)printf(a%d=%d,i,ai);9、当运行以下程序时,从键盘输入:BOOKCUTGAMEPAGE(表示回车),则下面程序的运行结果是()#includestdio.h#includestring.hmain()inti;charstr10,temp10=Control;for(i=0;i4;i+)gets(str);if(strcmp(temp,str)0)strc

23、py(temp,str);puts(temp);10、当运行以下程序时,从键盘输入girlboy(表示回车),则下面程序的运行结果是()#includestdio.h#includestring.hmain()chara280,t;inti,j,m,n,le,max;for(i=0;i=1;i+)gets(ai);t=a00;for(i=0;i=1;i+)le=strlen(ai);for(j=0;jt)max=aij;m=i;n=j;printf(%c%d%dn,max,m,n);11、下面程序的功能是在三个字符串中找出最小的。请填空(注:填空时请用数组元素表示方法)。#includestd

24、io.h#includestring.hmain()chars20,str320;inti;for(i=0;i3;i+)gets(stri);strcpy(s,(1)str0:str1);if(strcmp(str2,s)=0&cha=9;a+)s=10*s+cha-0;printf(%d,s);13、下面程序的运行结果是()main()inta33,i,j;for(i=1;i3;i+)for(j=1;j3;j+)aij=(i/j)*(j/i);for(i=1;i3;i+)for(j=1;j3;j+)printf(%d,aij);14、下面程序段将输出computer,请填空。charc=It

25、sacomputer;for(i=0;i=1;i+)printf(%c,ci2);15、下面程序的运行结果是()main()inta9=0,6,12,18,42,44,52,67,94;intx=52,i,n=9,m;i=n/2+1;m=n/2;while(m!=0)if(xai)i=i+m/2+1;m=m/2;elsebreak;printf(%d,i);三、判断题1、有以下说明语句:inta10=6,7,8,9,10;则将5个初值依次赋给a1至a5。()2、若有说明:inta4=0,0;则只有元素a00和a01可得到初值0。()3、inta=0;是对一维数组a进行正确初始化的语句。()4、

26、有以下语句是正确的。chars10;s=China;()5、若有说明:inta34=0;则数组a中每个元素均可得到初值0。()6、floata3,4;是对二维数组a的正确定义。()7、在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式。()8、以下是对一维整型数组a的正确定义:intn;scanf(%d,&n);intan;()9、若有定义:inta10;则a10是对a数组元素的正确引用。()10、若有以下定义:staticinta34;则数组a中各元素不能得到确定的值。()11、inta口3=1,2,3;是能对二维数组a进行正确的初始化的语句。()12、有以下定义和语

27、句:chars110=China;printf(%d,strlen(s1);输出结果为5。()四、程序填空1、将一个数列头尾颠倒。设该数列为1,3,5,7,9,11,13,15,17,19。要求19,17,15,13,11,9,7,5,3,1次序存放并输出。要求写一函数实现对包含任意个数据的颠倒处理。voidf2(chara,intn)inti,t;for(1;in2;i+)t=ai;ai=an-i;an-i=t;2、编写串连接函数strcat。(注:填空请用数组表示方法)voidstrcat(chars1,chars2)inti,j;for(i=0;1;i+);for(j=0;2;j+)s1

28、i+j=s2j;s1i+j=33、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。(注:填空请用数组表示方法)main()inta3=5,9,19;intb5=12,24,26,37,48;intc10,i=0,j=0,k=0;while(i3&jbj)1;k+;j+;else2;k+;i+;while(i3)3;i+;k+;while(j5)4;k+;j+;4、用冒泡法进行排序函数如下,请填空。voidbubble(inta,intn)inti,j,t,temp;for(1;iaj+1)temp=aj;aj=aj+1;aj+1=temp;5、下面程序的功能是输入5

29、个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。main()inta5,max,min,i,j,k;for(i=0;i5;i+)scanf(%d,&ai);1a0;for(i=1;i5;i+)if(aimin)min=ai;2;3a0;for(i=1;imax)max=ai;4;ak=max;aj=min;printf(nThepositionofminis:%dn,k);printf(Thepositionofmaxis:%dn,j);for(i=0;i5;i+)printf(%5d,ai);6、有三行文字,找出其中共有多少个空格、多少个单词。规定单词间以

30、一个或多个空格相隔。如果一个单词恰好在行末结束,则下一行开头应有空格。句号或逗号后面亦应有空格。(注:填空请用数组表示方法)main()chara380;inti,j,wd=0,bk=0,1;for(i=0;i3;i+)for(j=0;j80;j+)scanf(%c,&aij);for(i=0;i3;i+)for(j=0;j=a&aij=A&aij=Z)&(2)wd=wd+1;flag=1;if(3)bk=bk+1;flag=0;7、删除一个字符串中的第n个字符。(注:填空请用数组表示方法)voiddel_str(chara,intn)1;8、下面程序可求出矩阵a的两条对角线上的元素之和,请填

31、空。main()inta44=1,3,6,7,9,11,14,15,0,19,13,2,5,8,12,21;intsum1=0,sum2=0,i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(i1)sum1=sum1+aij;for(i=0;i=0;j-)if(i+j=3)sum2=sum2+aij;printf(%d,%d,sum1,sum2);9、下面程序的功能是检查一个二维数组是否对称,(即:对所有i和j都有aij=aji)。请填空。main()inta44,i,j,found=0;for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);

32、for(j=0;j4;j+)for(i=j+1;i4;i+)if(aij1)2;break;if(found=1)printf(Yes);elseprintf(No)10、设计一个函数,有一个数组有n个数据,已按由小到大排序好,要求输入一个数,把它插入到原有数列中,而且仍然保持有序。voidf3(chara,intn,intx)inti=0,j,flag=0;while(ix)1;i+;if(flag=1)for(j=2;j=3;j-)aj+1=aj;elsean=x;11、下面函数是用折半查找方法在数组a中查找x。voidbinary_search(inta,intn,intx)intmid

33、,top,bot,i,find;top=0;bot=n-1;find=0;domid=(top+bot)/2;if(x=amid)1;elseif(xamid)3=mid+1;while(top=bot)&(find=0);if(find=1)printf(beenfound);elseprintf(notbeenfound);12、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。main()inta23=1,2,3,4,5,6,b32,i,j;for(i=0;i=1;i+)for(j=0;j=2;j+)1;for(i=0;in;i+)for(j=0;jm;j+)prin

34、tf(“%4i*d”m+,jb);printf(n“”);14、 n个串,要求按字母先后顺序排列,并按序输出。(注:填空请用数组表示方法)main()charc1080;intn,i,j,p;scanf(%d,&n);for(i=0;i=n-2;i+)2;for(j=i3;j0)p=j;if(p!=i)strcpy(t,cp);strcpy(cp,ci);strcpy(ci,t);for(i=0;in;i+)puts(ci);五、综合应用1、插入法:有n个数,已按由小到大顺序排列好,要求输入一个数据,把它插入到原有数列中,而仍然保持有序。voidf(inta,intn,intx)intI,j;

35、while(ai=x&ix)for(j=n-1;j=I;j-)aj+1=aj;ai=x;elseai=x;改写:voidf(inta,intn,intx)intI,j;while(ai=x&i=I;j-)aj+1=aj;ai=x;2、 插入法:下面程序的运行结果是()。main()intI=0,n=3,j,k=3;inta5=1,4,5;while(IaI)I+;for(j=n-1;j=I;j-)aj+1=aj;ai=k;for(I=0;I=n;I+)printf(“%3d”,ai);3、 插入法:若有以下程序段:inta=4,0,2,3,1,I,j,t;for(I=1;I=0&taj)aj+1=aj;j-;aj+1=t;for(I=0;I5;I+)printf(“%d”,ai);则该程序段的输出结果是()。4、 下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。main()inta3=5,9,19;intb5=12,24,26,37,48;intc10,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论