首页 C语言程序设计(第2版)_课后习题答案

C语言程序设计(第2版)_课后习题答案

举报
开通vip

C语言程序设计(第2版)_课后习题答案公众号【电气工程狗】免费分享更多资源C语言程序设计习题参考答案习题1一、判断题1.在计算机中,小数点和正负号都有专用部件来保存和表示。2.二进制是由0和1两个数字组成的进制方式。3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。4.在整数的二进制表示方法中,0的原码、反码都有两种形式。5.有符号数有三种表示法:原码、反码和补码。6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。解:1.F2.T3.T4.T5.T6.T二、单选题1.在计算机中,最适合进行...

C语言程序设计(第2版)_课后习题答案
公众号【电气工程狗】免费分享更多资源C语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 习题参考答案习题1一、判断题1.在计算机中,小数点和正负号都有专用部件来保存和 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示。2.二进制是由0和1两个数字组成的进制方式。3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。4.在整数的二进制表示方法中,0的原码、反码都有两种形式。5.有符号数有三种表示法:原码、反码和补码。6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。解:1.F2.T3.T4.T5.T6.T二、单选题1.在计算机中,最适合进行数值加减运算的数值编码是。A.原码B.反码C.补码D.移码2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。A.112B.120C.121D.1223.关于ASCII码,在计算机中的表示方法准确地描述是。A.使用8位二进制数,最右边一位为1B.使用8位二进制数,最左边一位为1C.使用8位二进制数,最右边一位为0D.使用8位二进制数,最左边一位为04.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。A.X∧Y=1000B.X∨Y=1111C.X⊕Y=0011D.¯Y=10005.下列叙述中正确的是()。A.高级语言就是机器语言B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。A.生成可执行文件B.生成目标文件C.输出运行结果D.自动保存源文件7.下列叙述中不正确的是()。A.main函数在C程序中必须有且只有一个B.C程序的执行从main函数开始,所以main函数必须放在程序最前面C.函数可以带参数,也可以不带参数。D.每个函数执行时,按函数体中语句的先后次序,依次执行每条语句解:1.C2.C3.D4.B5.B6.B7.B三、填空题公众号【电气工程狗】免费分享更多资源1.(87.625)10=()2=()8=()162.(1001010111001.10111)2=()8=()16=()103.输入三个数,计算并输出三个数的和与三个数的乘积。程序如下:#includevoidmain(){inta,b,c,s,z;printf("Pleaseinputabc:\n");s=a+b+c;printf("%d\n",s);}*4.输入三角形三条边的边长,计算并输出三角形的面积。根据三条边的边长,计算三角形面积的公式如下:xyz面积ss(x)(sy)(sz)其中s2程序如下:#include#includevoidmain(){doublex,y,z,s,dime;scanf("%lf%lf%lf",&x,&y,&z);dime=sqrt(s*(s-x)*(s-y)*(s-z));}解:1.1010111.101127.557.A2.11271.5612B9.B84793.718753.scanf("%f%f%f",&a,&b,&c);z=a*b*c;printf("%f",z);4.s=(x+y+2)/2;printf("%f",dim);四、编程题1.仿照例1.1,编程序在屏幕上显示:*****************************MerryChristmas!HappyNewYear!*****************************解:#includevoidmain(){printf("*****************************\n");printf("MerryChristmas!\n");1公众号【电气工程狗】免费分享更多资源printf("HappyNewYear!\n");printf("*****************************\n");}2.仿照例1.2编程,输入一个整数,计算这个数的平方。解:#includevoidmain(){inta,z;printf("请输入一个整数:\n");scanf("%d",&a);z=a*a;printf("%d*%d=%d\n",a,a,z);}*3.仿照例1.3编程,输入两个数后,输出其中较小值。解:#includefloatmin(floatx,floaty){floatm;if(xvoidmain(){floata,b,x;printf("请输入a、b:\n");scanf("%f%f",&a,&b);x=-a/b;printf("x=%f\n",x);}*5.仿照例1.2编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。解:#includevoidmain(){floatr,h,s,v;printf("Pleaseinputrandh:\n");scanf("%f%f",&r,&h);v=3.14*r*r*h;printf("V=%f\n",v);2公众号【电气工程狗】免费分享更多资源}习题2一、判断题1.任何变量都必须要定义其类型。2.C语言的double类型数据在其数值范围内可以表示任何实数。3.C语言的任何类型数据在计算机内都是以二进制形式存储的。4.isdigit(‘5’)的结果为0。5.printf函数中格式符“%c”对应的参数只能是字符类型。6.按格式符“%d”输出float类型变量时,截断小数位取整后输出。7.在C语言程序中,ABC与abc是两个相同的变量。8.scanf函数中的格式符“%d”不能用于输入实型数据。9.格式符“%f”不能用于输入double类型数据。10.当格式符中指定宽度时,输出的信息完全取决于所指定的宽度。解:(1)T(2)F(3)T(4)F(5)F(6)F(7)F(8)T(9)T(10)F二、指出下列各项中哪些是C语言中的常量,并指出其类型10,150007–0x3dπ1e0e1o7o8‘x’‘xo’1.52e0.5sin(3)0xf16‘\a’‘\009’1.414E+22.54‘\\’‘a’+20x100h012810L解:合法的C常量有:整型常量:007–0x3d0xf1610L实型常量:1e01.414E+2字符型常量:‘x’‘\a’‘\\’三、指出下列各项中哪些是C语言中的用户标识符x_1X_2Highprintfβ3DSi/je2-e2countIntnumber$23next_sizeofIFsum_12_123#NO1:doublefor解:C的用户标识符有:x_1X_2Highe2countIntnumbernext_IFsum_12四、单项选择题1.C语言中,char型数据在内存中的存储形式是()。A.原码B.反码C.补码D.ASCII码2.若有定义语句“charc='\72';”则变量c()。A.包含1个字符B.包含2个字符C.包含3个字符D.定义不合法3.C语言中的基本数据类型包括()。A.整型、实型、逻辑型B.整型、实型、字符型C.整型、逻辑型、字符型D.整型、实型、逻辑型、字符型4.设c1、c2为字符型变量,执行语句“c1=getchar();c2=getchar();”时,从键盘输入A↙,c1和c2的值分别为()。A.都是‘A’B.c1是‘A’,c2未输入3公众号【电气工程狗】免费分享更多资源C.c1未输入,c2是‘A’D.c1是‘A’,c2是‘\n’5.a、b是整型变量,执行语句“scanf("a=%d,b=%d",&a,&b);”,使a和b的值分别为1和2,正确的输入是()。A.12B.1,2C.a=1,b=2D.a=1b=26.设c为字符型变量值为‘A’,a为整型变量值为97,执行语句“putchar(c);putchar(a);”后,输出结果为()。A.AaB.A97C.A9D.aA7.已知字母A的ASCII码值为65,以下语句段的输出结果是()。charc1='A',c2='Y';printf("%d,%d\n",c1,c2);A.输出格式非法,输出错误信息B.65,90C.A,YD.65,898.若要使用输入语句“scanf("%4d%4d%10f",&i,&j,&x);”,为i输入-10,为j输入12,为x输入345.67,则正确的输入形式是()。A.–1012345.67↙B.–1012345.67↙C.–10001200345.67↙D.–10,12,345.67↙9.能正确地定义符号常量的是()。A.#definen=10B.#definen10C.#definen10;D.#DEFINEN1010.在C语言中,int、char、short三种类型数据在内存中所占的字节数()。A.由用户自己定义B.均为2个字节C.是任意的D.由机器字长决定解:(1)D(2)A(3)B(4)D(5)C(6)A(7)D(8)B(9)B(10)D五、填空题1.charch='$';floatx=153.4523;语句“printf("%c%–8.2f\\n",ch,x);”的输出结果是。解:$153.45\n2.inti=123;floatx=–1234.56789;语句“printf("i=%5dx=%7.3f\n",i,x);”的输出结果是。解:i=123x=-1234.5683.charc='a';inta=65;语句“putchar(c+1);putchar(a);”的输出结果是。解:bA4.inta=98;语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是。解:98,c,144,655.intk;floatf;语句“scanf(“%3d%*4d%6f”,&k,&f);”执行时输入12345678765.43↙则k=,f=。解:k=123f=8765.46.使用pow()函数时,程序的开头必须写一条预处理命令:。解:#include5.填空题。(1)inti=123,j=45;函数printf("%d,%d\n",i,j);的输出结果是。解:123,454公众号【电气工程狗】免费分享更多资源(2)inti=123;floatx=-45.678;语句printf("i=%5dx=%7.4f\n",i,x);的输出结果是。解:i=123x=-45.6780(3)floatalfa=60,pi=3习题3一、根据下列数学式,写出C的算术表达式。1abcd2102(a2b3)y4|sin(x)|3.5x6e52tan1xcda2bcd解:-(a2+b2)×y4的C表达式:-(a*a+b*b)*pow(y,4)2102的C表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+3.141593)tan1x|sin(x)|3.5的C表达式:sqrt(pow(fabs(sin(x)),3.5))x6e5的C表达式:pow(x,6)-exp(5)1abcd2的C表达式:(1.0/2*a*b+c+d)/(a+2*b-(c+d)/c/d)cda2bcd二、按照要求,写出下列C的表达式。1.写出int类型变量x为“奇数”的表达式。解:x%2==12.Int类型变量x、y、z,写出描述“x或y中有且仅有一个小于z”的表达式。解:x=z||x>=z&&y=0?1:-1)*(y>=0?y:-y)5.条件“-5≤x≤3”所对应的C逻辑表达式。解:-5<=x&&x<=36.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式解:a+32==b或b-a==32?1:07.int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。解:a%10==b/10&&a/10==b%108.写出判断某个人是否是成年人(年龄大于21),且不是老年人(年龄大于65)的逻辑表达式。5公众号【电气工程狗】免费分享更多资源解:y>21&&y<=659.写出取变量a、b、c中最大值的条件表达式。解:(a>b?a:b)>c?(a>b?a:b):c10.若字符变量ch为小写字母,则将其转换为对应的大写字母。解:ch=ch>='a'&&ch<='z'?ch-32:ch三、单项选择题1.设intx=3,y=4,z=5;,下列表达式中值为0的是()。A.'x'&&'y'B.x<=yC.x||y+z&&y–zD.!((x=y&&ch<'B'&&!y”的值是()。A.0B.1C.“假”D.“真”3.判断char型变量c为数字字符的正确表达式为()。A.'0'<=c<='9'B.'0'<=c&&c<='9'C.c>='0'||c<='9'D.c>=0&&c<=94.下列运算符中,优先级最低的是()。A.?:B.&&C.==D.*=5.若有条件表达式“x?a++:b--”,则以下表达式中()等价于表达式x。A.x==0B.x!=0C.x==1D.x!=16.有定义intk=4,a=3,b=2,c=1;,表达式“kc);后,m和n的值分别为。解:m为0,n为29.设inta=2;,表达式“a%2!=0”的值为。解:010.设charc='y';,表达式“c>='a'&&c<='z'||c>='A'&&c<='Z'”的值为。解:111.写出与代数式(x+2)ex+2对应的C表达式。解:(x+2)*exp(x+2)12.设inta=2;执行语句a=3*5,a*4;后a的值为。解:15五、写出下列程序的输出结果。1.#includevoidmain(){unsignedk,n;scanf("%u",&n);//输入数据为:69k=n%10*10+n/10;printf("n=%dk=%d\n",n,k);}解:n=69k=962.#includevoidmain(){intx=2,y=3;x*=y+4;printf("%d,%d\n",x,y);x/=y=5;printf("%d,%d\n",x,y);x-=y%2;printf("%d,%d\n",x,y);}解:14,37公众号【电气工程狗】免费分享更多资源2,51,53.#includevoidmain(){inta,b;a=8;b=7;a=(a--==b++)?a%3:a/3;printf("a=%db=%d\n",a,b);}解:a=2b=8六、程序填空题。1.以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。例如输入123,输出a=2b=3c=1。#includevoidmain(){inta,b,c,①;printf(“Entera,b,c:”);scanf(“%d%d%d”,②);③;a=b;b=c;④;printf(“a=%db=%dc=%d\n”,a,b,c);}解:①t②&a,&b,&c③t=a④c=t2.以下程序不借助任何变量把a、b中的值进行交换。#includevoidmain(){inta,b;printf(“Inputa,b:”);scanf(“%d%d”,①);a+=②;b=a-③;a-=④;printf(“a=%db=%d\n”,a,b);}解:①&a,&b②b③b④b七、编程题。1.输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。解:#includevoidmain(){charc1,c2,c3,t,min,mid,max;c1=getchar();c2=getchar();c3=getchar();min=(t=c1c2?c1:c2)>c3?t:c3;mid=c1+c2+c3-min-max;putchar(min);putchar(mid);putchar(max);}2.输入两点坐标(x1,y1)、(x2,y2),计算并输出两点间的距离。解:#include#includevoidmain(){doublex1,y1,x2,y2,d;printf(“请输入两点坐标(x1,y1),(x2,y2)\n”);scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2);d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));printf(“两点间距离=%f\n”,d);}3.编写程序,计算球体积并输出它的值。要求输入半径值,计算结果保留三位小数。解:#include#include#definePI3.1415926voidmain(){doubler,gv;printf(“请输入半径值:\n”);scanf(“%lf”,&r);gv=4.0/3*PI*pow(r,3);printf(“半径为%f的球的体积为:%.3f\n”,r,gv);}4.输入三角形的底和高,求三角形面积。解:#include#definePI3.14159voidmain(){doublea,h,s;printf(“请输入三角形的底,高\n”);scanf(“%lf,%lf”,&a,&h);s=a*h/2;printf(“三角形面积=%f\n”,s);}5.编写程序,输入一个实数后输出该数的绝对值。解:#includevoidmain(){doublex,y;9公众号【电气工程狗】免费分享更多资源printf(“请输入一个实数\n”);scanf(“%lf”,&x);y=x>=0?x:-x;printf(“|%g|=%g\n”,x,y);}6.输入梯形的上底、下底和高,求梯形面积。解:#includevoidmain(){doublea,b,h,s;printf(“请输入梯形的上底,下底,高\n”);scanf(“%lf,%lf,%lf”,&a,&b,&h);s=(a+b)*h/2;printf(“梯形面积=%f\n”,s);}7.输入矩形的边长,求矩形面积。解:#includevoidmain(){doublea,b,s;printf(“请输入矩形的长,宽\n”);scanf(“%lf,%lf”,&a,&b);s=a*b;printf(“矩形面积=%f\n”,s);}8.已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。解:#includevoidmain(){inta,d,n,sum;printf(“请输入等差数列的首项公差项数\n”);scanf(“%d%d%d”,&a,&d,&n);sum=a*n+n*(n-1)*d/2;printf(“sum=%d\n”,sum);}9.编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。解:#includevoidmain(){intd,h,m,t;printf(“请输入天小时分钟\n”);scanf(“%d%d%d”,&d,&h,&m);t=d*24*60+h*60+m;printf(“%d天%d小时%d分钟=%d分钟\n”,d,h,m,t);}10公众号【电气工程狗】免费分享更多资源10.编写程序,求出给定半径r的圆以及内接正n边形的面积,输出计算结果。r和n的值由键盘输入。解:#include#include#definePI3.14159voidmain(){doubler,s1,s2;intn;printf(“Inputrn\n”);scanf(“%lf%d”,&r,&n);s1=PI*r*r;s2=n/2.0*r*r*sin(2*PI/n);printf(“圆面积=%f,正内接%d边形面积=%f\n”,s1,s2);}习题4一、单项选择题1.下列语句将小写字母转换为大写字母,其中正确的是()。A.if(ch>='a'&ch<='z')ch=ch-32;B.if(ch>='a'&&ch<='z')ch=ch-32;C.ch=(ch>='a'&&ch<='z')?ch-32:'';D.ch=(ch>'a'&&ch<'z')?ch-32:ch;2.下列各语句中,能够将变量u、s中最大值赋给变量t的是()。A.if(u>s)t=u;t=s;B.t=s;if(u>s)t=u;C.if(u>s)t=s;elset=uD.t=u;if(u>s)t=s;3.假设变量x、k都已定义,下列语句片段中,无语法错误的是()。A.switch(x){casex>=90:putchar('A');casex<60:putchar('E');}B.switch(x){case1+2:k='A';defualt:k='E';case2*4:k='B';}C.switch(x){case2+x:k=x-2;case3*x:k=x+3;default:k=0;}D.switch(x){case3.5:k=0.5*x;case7.8:k=8*x;default:k=0;}*4.与语句while(!s)中的条件等价的是()。11公众号【电气工程狗】免费分享更多资源A.s==0B.s!=0C.s==1D.s=05.下列语句中,哪一个可以输出26个大写英文字母()。A.for(a='A';a<='Z';printf("%c",++a));B.for(a='A';a<'Z';a++)printf("%c",a);C.for(a='A';a<='Z';printf("%c",a++));D.for(a='A';a<'Z';printf("%c",++a));6.判断下面的while循环体的执行次数()。i=0;k=10;while(i=8)i=k––;A.8次B.10次C.2次D.无数次解:(1)B(2)B(3)B(4)A(5)C(6)D二、写出下列程序的输出结果1.#includevoidmain(){charx;intn=0,k=0;while((x=getchar())!='#'){//运行时输入:athefthethethere#switch(x){case't':k++;break;case'h':if(k==1)k++;break;case'e':if(k==2)k++;break;default:k=0;}if(k==3)n++;}printf("%d\n",n);}解:3*2.#includevoidmain(){intk=0;charc='A';do{switch(c++){case'A':k++;break;case'B':k--;case'C':k+=2;break;case'D':k=k%2;break;case'E':k=k*10;break;default:k=k/3;12公众号【电气工程狗】免费分享更多资源}k++;}while(c<'G');printf("k=%d\n",k);}解:k=8*3.#include#includevoidmain(){chara,b,x;inti;dox=getchar();//运行时输入:2abcDwhile(isupper(x)==0);for(a='A';a<=x;a++){for(b='A';b<'A'+x-a;b++)putchar('');for(i=1;i<=2*(a-'A')+1;i++)putchar(a);putchar('\n');}}注:isupper(x)是判断x是否大写字母的函数,如果x是大写字母函数值为1否则为0。解:ABBBCCCCCDDDDDDD4.#includevoidmain(){inti,n;scanf("%d",&n);//输入2520i=2;while(n>1)if(n%i==0){printf("%d\t",i);n/=i;}elsei++;printf("\n");}13公众号【电气工程狗】免费分享更多资源解:2223357三、填空题1.求1~10的乘积,写作:for(,i=1;i<=10;++i)s*=i;解:s=12.下面程序段执行后,x、y的值分别为。y=1;x=5;while(x){x--;y++;}解:x、y分别为0和6*3.输入若干个以问号结束的字符,同时输出这串字符(不包括问号);while(!='?')putchar(ch);解:(ch=getchar())//注意外面的这对括号不能少*4.有以下程序片段:s=1.0;for(k=1;k<=n;k++)s+=1.0/(k*(k+1));printf("%f\n",s);填空,使下程序段与上程序段功能完全相同。s=0.0;;k=0;do{s+=d;;d=1.0/(k*(k+1));}while();printf("%f\n",s);解:d=1k++k<=n5.下列程序输出6~10000之间的亲密数对,填空将程序补充完整。若a、b是亲密数对,则a的因子和等于b,b的因子和等于a,且a不等于b。#includevoidmain(){inta,b,c,i;for(a=6;a<=10000;a++){b=1;for(i=2;i<=a/2;i++)if()b+=i;for(i=2;i<=b/2;i++)if(b%i==0)c+=i;14公众号【电气工程狗】免费分享更多资源if(&&a!=b)printf("%d%d\n",a,b);}}解:a%i==0c=1;c==a6.计算2+22+222+2222+…+22+…+2的和。n#includenvoidmain(){ints=1,t=1,a,n;scanf("%d"&n);for(inti=2;i<=n;i++){t=t*10+1;}printf("SUM=%d\n",s);}解:a=2;s+=t;s*=a;四、编程题1.输入一个实数,输出它的平方根值,如果输入数小于0,则输出“Thenumberiserror!”的提示。解:#include#includevoidmain(){doublea,x;printf(“Inputdata:\n”);scanf(“%lf”,&a);if(a>=0){x=sqrt(a);printf(“%g的平方根值为%g\n”,a,x);}elseprintf(“Thenumberiserror!\n”);}2.用if语句编程序,输入x后按下式计算y值,并输出结果。2x+2*x+100≤x≤8y=3x-3*x-9x<0或x>8解:#includevoidmain(){doublex,y;15公众号【电气工程狗】免费分享更多资源printf(“Inputx:\n”);scanf(“%lf”,&x);if(x>=0&&x<=8)y=x+2*x*x+10;elsey=x-3*x*x*x-10;printf(“x=%f,y=%f\n”,x,y);}3.输入一个百分制的成绩t后,按下式输出它的等级,要求分别写成if结构和switch结构。等级为:90~100为“A”,80~89为“B”,70~79为“C”,60~69为“D”,59~0为“E”。if结构解:#includevoidmain(){doublet;printf(“Inputscore:\n”);scanf(“%lf”,&t);if(t>=90&&t<=100)putchar(‘A’);elseif(t>=80&&t<90)putchar(‘B’);elseif(t>=70&&t<80)putchar(‘C’);elseif(t>=60&&t<70)putchar(‘D’);elseif(t>=0&&t<60)putchar(‘E’);elseprintf(“error!\n”);}switch结构解:#includevoidmain(){doublet;printf(“Inputscore:\n”);scanf(“%lf”,&t);switch((int)(t/10)){case10:case9:putchar(‘A’);break;case8:putchar(‘B’);break;case7:putchar(‘C’);break;case6:putchar(‘D’);break;case5:case4:16公众号【电气工程狗】免费分享更多资源case3:case2:case1:case0:putchar(‘E’);break;default:printf(“error!\n”);}}4.输入x、y,计算f(x,y)的函数值。f(x,y)定义如下:x2y2x0y022xyx0y0f(x,y)xyx0y0xyx0y0解:#includevoidmain(){doublex,y,f;printf(“Inputxy:\n”);scanf(“%lf%lf”,&x,&y);if(x>=0&&y>=0)f=x*x+y*y;elseif(x<0&&y<0)f=x*x-y*y;elseif(x>=0&&y<0)f=x+y;elseif(x<0&&y>=0)f=x-y;printf(“f(%f,%f)=%f\n”,x,y,f);}5.输入三角形的三条边长a、b、c,计算并输出三角形的面积。要求判断输入的三条边a、b、c三个数是否能构成三角,如果不能构成三角形,则输出提示信息告诉用户。根据三条边的边长,计算三角形面积的公式如下:xyzs面积s(sx)(sy)(sz)2解:#include#includevoidmain(){doublea,b,c,s,area;printf(“Inputabc:\n”);scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));17公众号【电气工程狗】免费分享更多资源printf(“area=%.3f\n”,area);}elseprintf(“线段%f,%f,%f不能构成三角形\n”,a,b,c);}6.输入1~7,输出对应的星期一~星期天。解:#includevoidmain(){ints;printf(“Inputs(1~7):\n”);scanf(“%d”,&s);switch(s){case1:printf(“星期一\n”);break;case2:printf(“星期二\n”);break;case3:printf(“星期三\n”);break;case4:printf(“星期四\n”);break;case5:printf(“星期五\n”);break;case6:printf(“星期六\n”);break;case7:printf(“星期天\n”);break;default:printf(“Thesiserror!\n”);}}7.输入年、月、日,输出是该年的第几天。解:#includevoidmain(){inty,m,d,days;printf(“Input年月日:\n”);scanf(“%d%d%d”,&y,&m,&d);days=d;switch(m){case12:days+=30;case11:days+=31;case10:days+=30;case9:days+=31;case8:days+=31;case7:days+=30;case6:days+=31;case5:days+=30;case4:days+=31;case3:if(y%4==0&&y%100!=0||y%400==0)days+=29;18公众号【电气工程狗】免费分享更多资源elsedays+=28;case2:days+=31;}printf(“%d月%d日是%d年的第%d天\n”,m,d,y,days);}8.输入n和相应的n个数,输出它们中所有奇数的乘积。解:#includevoidmain(){intn,i,t,x;printf(“请输入n:\n”);scanf(“%d”,&n);printf(“请输入%d个数:\n”,n);for(i=1,t=1;i<=n;i++){scanf(“%d”,&x);if(x%2==1)t*=x;}printf(“%d\n”,t);}9.输入一个正整数,求它们所有数字之和。解:#includevoidmain(){inta,sum=0;printf(“请输入一个正整数:\n”);scanf(“%d”,&a);a=a>=0?a:-a;while(a!=0){sum+=a%10;a/=10;}printf(“%d\n”,sum);}10.输入n和相应的n个数,统计输入的数中负数、零及正数的个数。解:#includevoidmain(){intn,i,t,s,k;doublex;t=s=k=0;19公众号【电气工程狗】免费分享更多资源printf(“请输入n:\n”);scanf(“%d”,&n);printf(“请输入%d个数:\n”,n);for(i=1;i<=n;i++){scanf(“%lf”,&x);if(x>0)t++;elseif(x<0)s++;elsek++;}printf(“负数:%d\t零:%d\t正数:%d\n”,s,k,t);}11.输入10个学生的成绩,输出最低分数。解:#includevoidmain(){inti;doublescore,min;printf(“请输入10个学生成绩:\n”);scanf(“%lf”,&score);min=score;//给min赋初值for(i=1;i<10;i++){scanf(“%lf”,&score);if(min>score)min=score;}printf(“min=%g\n”,min);}或解:#includevoidmain(){inti;doublescore,min;printf(“请输入10个学生成绩:\n”);for(i=1;i<=10;i++){scanf(“%lf”,&score);if(i==1)min=score;if(min>score)min=score;}printf(“min=%g\n”,min);20公众号【电气工程狗】免费分享更多资源}12.青年歌手大奖赛中,10个评委给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分。计算并输出选手张三的得分。(注:如果最高分或最低分有多个相同时,去掉其中一个)解:#includevoidmain(){inti;doublescore,min,max,sum,aver;printf(“请输入10个评委给张三的评分:\n”);scanf(“%lf”,&score);min=max=sum=score;for(i=1;i<10;i++){scanf(“%lf”,&score);if(min>score)min=score;if(maxvoidmain(){inti;doublescore,min,max,sum=0,aver;printf(“请输入10个评委给张三的评分:\n”);for(i=1;i<=10;i++){scanf(“%lf”,&score);if(i==1)max=min=score;if(min>score)min=score;if(maxvoidmain(){charc;for(c=’A’;c<=’Z’;c++)printf(“%c\t%d\n”,c,c);}或解:#includevoidmain(){charch='A';while(ch<='Z'){printf("(%c,%d)\n",ch,ch);ch++;}}14.输出所有的“水仙花数”,水仙花数是指一个三位数,其各位数字的立方和等于其本身,如:153=13+53+33。解:#includevoidmain(){intx,a,b,c;printf(“水仙花数:\n”);for(x=100;x<1000;x++){a=x/100;b=x%100/10;c=x%10;if(x==a*a*a+b*b*b+c*c*c)printf(“%d\t”,x);}printf(“\n”);}1111115.求算式1n前40项的和。23456解:#includevoidmain(){inti;doublesum=0,flag=1;for(i=1;i<=40;i++){sum+=flag/i;flag=-1*flag;//或flag=-flag22公众号【电气工程狗】免费分享更多资源}printf(“sum=%g\n”,sum);}16.输出一张华氏与摄氏温度对照表,将华氏温度从30°~40°F之间的每度转换对应的摄氏温度输出。张华氏转化为摄氏温公式:c=5/9(F-32)解:#includevoidmain(){doublef,c;for(f=30;f<=40;f++){c=5.0/9*(f-32);printf(“%g\t%g\n”,f,c);}}*17.求数列的和。设数列的首项为81,以后各项为前一项的平方根(如81,9,3,1.732,…),求前20项和。解:#include#includevoidmain(){inti;doublesum=0,a=81;for(i=1;i<=20;i++){sum+=a;a=sqrt(a);//下一项为前一项的平方根}printf(“sum=%g\n”,sum);}18.输出一个如下的乘法口诀表。1×1=11×2=22×2=41×3=32×3=63×3=9………1×9=92×9=183×9=27………9×9=81解:#includevoidmain(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(“%d*%d=%d\t”,j,i,i*j);23公众号【电气工程狗】免费分享更多资源printf(“\n”);}}*19.猴子吃桃子。第1天猴子吃掉桃子总数一半多一个,第2天又将剩余的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第十天准备吃的时候只剩下一个桃子。请问第1天开始吃的时候桃子的总数。//递推公式x=2*(x+1)解:#includevoidmain(){intn,x;x=1;//第10天的挑子数for(n=9;n>=1;n--){x=2*(x+1);//计算第n天的桃子数}printf("第1天吃前挑子总数=%d\n",x);}*20.用循环体编程序,分别输出如下两个图形,如图4.15所示。******************************************左图解:#includevoidmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=8-2*i;j++)putchar('');for(j=1;j<=2*i-1;j++)printf("%c",'*');putchar('\n');}}右图解:#includevoidmain(){24公众号【电气工程狗】免费分享更多资源inti,j;for(i=1;i<=4;i++)//图上半部分{for(j=1;j<=8-2*i;j++)putchar('');for(j=1;j<=2*i-1;j++)printf("%c",'*');putchar('\n');}for(i=3;i>=0;i--)//图下半部分{for(j=1;j<=8-2*i;j++)putchar('');for(j=1;j<=2*i-1;j++)printf("%c",'*');putchar('\n');}}21.输入正整数a、b,输出a、b之间所有素数之和。解:#includevoidmain(){inti,j,a,b,sum=0;printf(“请输入ab(a≤b)\n”);scanf(“%d%d”,&a,&b);for(i=a;i<=b;i++){for(j=2;j<=i/2;j++)if(i%j==0)break;//此时可判定i不是素数if(j>i/2&&i!=1)sum+=i;//满足此条件表示除1和自身外,其它数均不能整除i}printf(“%d至%d之间的素数和=%d\n”,a,b,sum);}或解:#includevoidmain(){inti,j,a,b,sum=0,flag;printf(“请输入ab(a≤b)\n”);scanf(“%d%d”,&a,&b);for(i=a;i<=b;i++){flag=1;//要判别当前i是否素数,先将标志变量赋值为125公众号【电气工程狗】免费分享更多资源for(j=2;j<=i/2;j++)if(i%j==0){flag=0;break;}//此时可判定i不是素数,退出循环if(flag==1&&i!=1)sum+=i;//满足此条件表示除1和自身外,其它数均不能整除i}printf(“%d至%d之间的素数和=%d\n”,a,b,sum);}*22.当x为–2,–1.5,–1,…,1.5,2时,求函数f(x)=x2–3.14x–6的解所取的最大值、最小值。解:#includevoidmain(){doublex,y,max,min;max=min=(-2)*(-2)-3.14*(-2)-6;//f(-2)作为max、min的初始值for(x=-1.5;x<=2;x+=0.5){y=x*x-3.14159*x-6;if(y>max)max=y;elseif(y#includevoidmain(){inti,j,y,count=0;for(i=-39;i<=40;i++){y=i*i+i+41;for(j=2;j<=sqrt(y);j++)if(y%j==0){printf("当i为%d时,y=%d,结论不成立!\n",i,y);count++;break;}}if(count!=0)printf("共有%d个i值,使结论不成立!\n",count);elseprintf("结论成立,都是素数!\n");}26公众号【电气工程狗】免费分享更多资源*24.用区间对分法求x2+xsinx–5=0在区间[0,5]内的一个实根(设ε=10–5)。【说明】在[a,b]区间连续的函数f(x),若满足条件f(a)·f(b)<0,则必有a<ξ#includevoidmain(){floata,b,c;a=0;b=5;//初始化区间a、b值do{c=(a+b)/2;//计算a、b区间的中值if((a*a+a*sin(a)-5)*(c*c+c*sin(c)-
本文档为【C语言程序设计(第2版)_课后习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
小鸭文库
暂无简介~
格式:pdf
大小:498KB
软件:PDF阅读器
页数:90
分类:理学
上传时间:2022-11-03
浏览量:0