1、C言语次序计划教程第二版课后习题谜底第一章C言语次序计划概述习题谜底1算法的描绘有哪些根本办法?答1、天然言语2、公用东西2C言语次序的根本构造是怎么样的?举一个例子阐明。答1、C言语次序由函数形成;2、“/*与“*/之间的内容形成C言语次序的正文局部;3、用预处置下令#include、#define能够包括有关文件或预约义信息;4、巨细写字母在C言语中是有区不的;5、除main()函数跟规范库函数外,用户也能够本人编写函数,运用次序普通由多个函数构成,这些函数指定实践所需求做的任务。3C言语有什么特色?答1、存在构造言语的特色,次序之间非常轻易实现段的共享;2、要紧构造身分为函数,函数能够在
2、次序中被界说实现独破的义务,独破地编译代码,以实现次序的模块化;3、运算符丰厚,包括的范畴非常广;4、数据范例丰厚;5、同意直截了当访咨询物理地点,即可直截了当对硬件进展伤害,实现汇编言语的年夜局部功用;6、限度不太严厉,次序计划自在度年夜,如此使C言语能够增加对次序员的约束;7、天生的目的代码品质,次序履行效力高,同时C言语编写的次序的可移植性好。4指出正当与分歧法的标识符定名。答5阐明以下TurboC热键的功用。答F2:源文件存盘F10:挪用主菜单F4:次序运转到光标所外行用于调试次序Ctrl+F9:编译并链接成可履行文件Alt+F5:将窗口切换到DOS下,检查次序运转后果。6阐明以下Tu
3、rboC方法下输入并运转以下次序,记载下运转后果。main()printf(*n);printf(welcomeyoun);printf(verygoodn);printf(*n);main()inta,b,c,t;printf(pleaseinputthreenumbers;);scanf(%d,%d,%d,&a,&b,&c);/*课本S是过错的*/t=max(max(a,b),c);printf(maxnumberis:%dn,t);intmax(intx,inty)intz;if(xy)z=x;elsez=y;return(z);答运转后果:*welcomeyouverygood*运转后
4、果:pleaseinputthreenumbers;3,1,4/*左侧下划线内容为键盘输入*/maxnumberis:47一个C次序是由假设干个函数形成的,此中有且只能有一个函数。答main()8在TurboC情况下进展次序调试时,能够运用Run下拉菜单的下令或按键转到用户屏幕检查次序运转后果。答1、Userscreen2、Alt+F59C言语对标识符与要害字有些什么规那么?答1、标识符用来表现函数、范例及变量的称号,它是由字母、下划线跟数字构成,但必需用字母或下划线扫尾。2、要害字是一种言语中规那么存在特定含意的标识符,其不克不及作为变量或函数名来运用,用户只能依照零碎的规那么运用它们。10
5、C源次序输入后是怎样进展保管的?答是以C为扩年夜名保管的纯文本文件。第二章C言语次序的根本数据范例与表白式习题谜底1指出以下常数中哪些是契合C语法例那么的。答-101-e3-019-0x1e-2请寻出以下次序中的过错,矫正后写出次序运转后果。voidmain()intx,y=z=5,aver;x=7AVER=(x+y+z)/3printf(AVER=%dn,aver);voidmain()charc1=a;c2=b;c3=c;inta=3.5,b=Aprintf(a=%db=endn,a,b);printf(a%cb%cbc%ctabcn,c1,c2,c3);答main()intx,y=5,z
6、=5,aver;x=7;aver=(x+y+z)/3;printf(AVER=%dn,aver);运转后果:AVER=5main()charc1=a,c2=b,c3=c;inta=3,b=A;printf(a=%d,b=%cendn,a,b);printf(a%cb%cbc%ctabcn,c1,c2,c3);运转后果:a=3,b=Aendaabccabc3写出以下赋值的后果,表格中写了数值的是要将它赋给其余范例的变量,将一切的空格填上赋值后的数据实数保管到小数点后两位。int99-1charhunsignedint66float55.78longint68答int99104665568-1ch
7、archB7Dunsignedint9910466556865535float99.00104.0066.0055.7868.00-1.00longint99104665568-14写出次序运转后果。voidmain()inti,j;i=8,j=10;printf(%d,%d,%d,%dn,i,j,+i,j+);main()inta=1,b=2,c=30;printf(%d,%d,%d,%dn,a=b=c,a=b=c,a=(b=c),a=(b=c);留意:a=b=c,a=b=c之间应为逗号,课本有误答运转后果:9,11,9,10运转后果:30,1,0,0voidmain()inta=10,b=
8、20,c=30,d;d=+a=20|c+;printf(%d,%d,%d,%dn,a,b,c,d);答运转后果:11,19,30,15写出上面表白式的值设a=10,b=4,c=5,d=1,x=2.5,y=3.5。a%=(b%=3)n+,a+=a-=a*=a(float)(a+c)/2+(int)x%(int)ya*=b+c+a-c+b+a-c+bab?x:Ab+=ca+b,18+(b=4)*3,(a/b,a%b)x+a%3*(int)(x+y)%2/4+sizeof(int)ab?a:c0?x:-x的功用是什么?答假如x的值是一正数,那么表白式的值为x值;假如x的值是一非正数,那么表白式的值为
9、-x。事实上该表白式的值即为x的相对值,C言语中供给了一个函数fabs(x)即可实现此功用,该函数包括在math.h头文件中。8用一个前提表白式描绘从a、b、c中寻出最多数赋给max.答max=a(bc?b:c)?a:(bc?b:c);9假设x为int型变量,那么履行以下语句后x的值为。x=6;x+=x-=x*x;A.36B.-60C.60D.-24答B.10假设有以下范例阐明语句:charw;intx;floaty;doublez;那么表白式w*x+z-y的后果为范例。A.floatB.charC.intD.double答D.第三章次序构造次序计划习题谜底1变量k为float范例,挪用函数s
10、canf(%d,&k),不克不及使变量k失掉准确数值的缘故是。答格局润饰符与变量范例不分歧。因为%d输入的数据范例应当为十进制整数,而&k为占用4个字节的float范例变量的地点。2a=1234,b=12,c=34,那么履行“printf(|%3d%3d%-3d|n,a,b,c);后的输入是。答|12341234|剖析如下:%3d为右对齐输入变量,且指定输入变量的值宽度为3个字符位,假如变量实践位数小于3,那么左端补空格,假如变量实践位数年夜于3,那么按实践长度输入,不受限度。%-3d为左对齐输入变量,在输入变量时,如是变量实践位数小于3,那么在右端补空格,否那么按实践输入。3设有“inta=
11、255,b=8;,那么“printf(%x,%on,a,b);输入是。答ff,10假如“printf(%X,%on,a,b);那么输入为FF,10。阐明在输入十六进制字母时,其巨细写受格局润饰符的限度,假如是“%x那么输入小写,假如是“%X那么输入年夜写。假如盼望在输入十六进制时输入前导符0x或0X,那么以上输入语句应改“printf(%#x,%on,a,b);为或“printf(%#X,%on,a,b);。本条说明不用须控制。4以下次序输入的后果是。main()inta1=1,a2=0,a3=2;printf(%d,%d,%dn,a1,a1+a2+a3,a3-a1);答1,3,15print
12、f函数顶用到格局符%5s,此中5表现输入字符占用5列。假如字符串长度年夜于5,那么按输入;假如字符串长度小于5,那么按输入。答实践左端补空格6已界说变量如下:inta1,a2;charc1,c2;假设请求输入a1、a2、c1跟c2的值,准确的输入函数挪用语句是。答scanf(%d,%d,%c,%c,&a1,&a2,&c1,&c2);7输入两个整型变量a、b的值,输入以下算式以及运算后果。a+b、a-b、a*b、a/b、(float)a/b、a%b每个算式占一行。如a=10,b=5,a+b输入为:10+5=15答设inta=10,b=5;以下为输入语句及后果:printf(%d+%d=%dn,a
13、,b,a+b);10+5=15printf(%d-%d=%dn,a,b,a-b);10-5=5printf(%d*%d=%dn,a,b,a*b);10*5=50printf(%d/%d=%dn,a,b,a/b);10/5=2printf(%(float)d/%d=%fn,a,b,(float)a/b);(float)10/5=2.000000printf(%d%d=%dn,a,b,a%b);10%5=08输入一个非正数,盘算以那个数为半径的圆周长跟面积。答#definePI3.1415926main()floatr,l,area;printf(Inputapositive:);scanf(%f
14、,&r);l=2*PI*r;area=PI*r*r;printf(l=%ftarea=%fn,l,area);9输入恣意一个3位数,将其列位数字反序输入比方输入123,输入321。答main()intx,y;printf(Inputanumber(100-999):);scanf(%d,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*留意剖析此处算法*/printf(%d-%dn,x,y);10输入恣意巨细的3个整数,推断此中能否有两个奇数一个偶数。假设是那么输入YES,不是那么输出NOT请求用前提表白式进展推断,不运用if语句。答main()intx,y,z,od
15、dcount=0;/*奇数数计数变量*/printf(Inputx,y,z:);scanf(%d,%d,%d,&x,&y,&z);x%2=1?oddcount+:0;y%2=1?oddcount+:0;z%2=1?oddcount+:0;oddcount=2?printf(YES):printf(NOT);11求先驱字符跟后继字符。输入一个字符,寻出它的先驱字符跟后继字符,并按ASCII码值,按从年夜到小的次序输入这3个字符及其对应的ASCII码值。答此题考察同窗们对字符范例数据的看法,假如在ASCII范畴内那么即能够表现为字符,又能够表现为整数值;不管能否能够表现为字符,字符范例数据是能够参
16、加数值运算的,牢记。main()charc;printf(Inputcharacter:);scanf(%c,&c);printf(%c-%dn,c-1,c-1);printf(%c-%dn,c,c);printf(%c-%dn,c+1,c+1);getch();/*为便于调试次序,运转至此次序进展,如今能够看到运转后果,按恣意键次序真难过完毕并前往到编纂情况*/12输入三角形的边长,求三角形面积面积sqrt(s(s-a)(s-b)(s-c),s=(a+b+c)/2。答#includemath.h/*因为次序中运用了开平方函数sqrt(),因此需求包括数学头文件*/main()floata,b
17、,c,s,area;intok=0;printf(Inputa,b,c:);scanf(%f,%f,%f,&a,&b,&c);a+bc?ok+:0;/*以下3条语句为推断能否输入的数据能否形成封锁三角形*/a+cb?ok+:0;b+ca?ok+:0;ok=3?(s=(a+b+c)/2,area=sqrt(s*(s-a)*(s-b)*(s-c),printf(area=%f,area):printf(error);getch();第四章抉择构造次序计划习题谜底1设x、t均为int型变量,那么履行语句“x=10;t=x&x10;后,t的值为。答02假设一切变量均已正断定义,那么次序段:inta=0
18、,y=10;if(a=0)y-;elseif(a0)y+;elsey+=y;运转后y的值是;答203能表述20x30或x20&x30|+x-1004假设有界说语句“inta=25,b=14,c=19;,那么以下语句履行后果是。if(a=25&b=2&c)printf(*a+b=%d,a-b=%d*n,a+b,a-b);elseprintf(*a=%d,b=%d,c=%d*n,a,b,c);答*a=25,b=14,c=19*5假设i跟j为int型变量,那么履行以下语句后i的值是。inti=1;switch(i)case1:for(j=0;j9;j+)i+=j;break;case2:for(j=
19、1;j10;j+)i+=j;break;case3:i+;答37剖析:履行了case1:跟case3:中的代码。同时case1:语句中的是能够撤消的。6以下两条if语句可兼并成一条if语句,即。if(ab)printf(*y=%dn,y);elseprintf(*x=%dn,x);答if(a1)printf(outside);elseif(d0。if(a30)m=1;elseif(a40)m=2;elseif(a50)m=3;elseif(a60)m=4;elsem=5答switch(a/10)case1:case2:case3:m=1;break;case4:m=2;break;case5:
20、m=3;break;case6:m=4;break;default:m=5;12有一函数x-1-5x0y=xx=0x+10x-5&x0&x-5&x8)if(x0)y=x-1;elseif(x=0)y=0:elsey=x+1;printf(y=%fn,y);main()floatx,y;scanf(%f,&x);if(x0)y=x+1;elseif(x=0)y=0;elseif(x-5)y=x-1;printf(y=%fn,y);运用多分支语句次序如下:main()floatx,y;intm;printf(Inputx:);scanf(%f,&x);if(x-5&x8)if(x0)m=-1;el
21、seif(x=0)m=0:elsem=1;switch(m)case-1:y=x-1;break;case0:y=0;break;case1:y=x+1;break;printf(y=%fn,y);以下为假设对int范例的变量进展处置,但怎么说不算完满main()intx,y;printf(Inputx:);scanf(%d,&x);switch(x)case-4:case-3:case-2:case-1:y=x-1;break;case0:y=0;break;case1:case2:case3:case4:case5:case6:case7:y=x+1;break;printf(y=%dn,
22、y);第五章轮回构造次序计划习题谜底1输入n个整数,求这n个数之中的偶数均匀值,并输入。答main()intn,i,x,sum=0,count=0;printf(Inputn:);scanf(%d,&n);for(i=0;i=a&ch=A&ch=0&ch=a&ch=A&ch=Z)printf(%c,ch+32);getch();5设某县2000年产业总产值为200亿元,假如该县估计均匀年产业总产值增加率为4.5%,那么多青年后该县年产业总产值将超500亿元。答main()floatx=200;intn=0;dox*=(1+0.045);n+;while(x500);printf(n=%d,n)
23、;getch();6输入1999中能被3整除,并且至多有一位数字是5的所无数字。答main()intx,y,flag;for(x=1;x1000;x+)flag=0;y=x;if(y%3=0)/*余数为0阐明该数能够被3整除*/while(y%10!=0)if(y%10=5)flag=1;/*依个位、十位、百位次序推断能否余数为5*/y/=10;if(flag=1)printf(%dt,x);getch();7求爱因斯坦数学题。有一条长阶,假设每步跨2阶,那么最初剩1阶,假设每步跨3阶,那么最初剩2阶,假设每步跨5阶,那么最初剩4阶每步跨6阶,那么最初剩5阶每步跨7阶,最初恰好1阶。答main
24、()intx=0,flag=0;while(1)x+;if(x%2=1)if(x%3=2)if(x%5=4)if(x%6=5)if(x%7=0)printf(%d,x);break;getch();8输入一个3位数,推断能否是一个“水仙花数。水仙花数是指3位数的列位数字的破方跟等于那个3位数自身。比方,1531*1*1+5*5*5+3*3*3答main()intx,a,b,c;printf(Inputnumber:);scanf(%d,&x);a=x/100;/*变量a中记载x的百位数字*/b=x/10%10;/*变量b中记载x的十位数字*/c=x%10;/*变量c中记载x的个位数字*/if(
25、a*a*a+b*b*b+c*c*c=x)printf(%d=%d*%d*%d+%d*%d*%d+%d*%d*%dn,x,a,a,a,b,b,b,c,c,c);printf(YES);elseprintf(NOT);getch();9盘算斐波那契分数序列前n项之跟n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,.。答main()inti,n=10;floatf1=1,f2=2,f,sum=0;for(i=0;in;i+)sum+=f2/f1;f=f1+f2;f1=f2;f2=f;printf(total=%dnsum=%f,n,sum);getch();10输入一个正整数,各输入n
26、行的正倒三角形浮屠图案。答main()intn,i,j;printf(Inputn:);scanf(%d,&n);for(i=0;in;i+)for(j=i+1;jn;j+)printf();for(j=0;j2*i+1;j+)printf(*);printf(n);for(i=0;in-1;i+)for(j=0;ji+1;j+)printf();for(j=2*i-1;jn+1;j+)printf(*);printf(n);getch();11输入九九乘法表。答main()inti,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-3d,j,i,i*j);printf(n);getch();12输入一串字符,直到输入一个星号为止,统计输入此中的正整数跟负整数个数以及一切正整数的均匀值跟一切负整数的均匀值。答#includestdio.h#includemath.hmain()charch;intx=0,y=1,f=0,pcnt=0,ncnt=0;floatpsum=0,nsum=0;while(ch=getchar()!=*)if(ch=-)if(x!=0)if(f=1)
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100