• 132.50 KB
  • 2022-04-22 11:19:49 发布

C语言程序设计教程(第三版)课后习题参考答案 张敏霞版.doc

  • 0页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'285附录F课后题参考答案附录F课后题参考答案习题11.1填空题1.函数2.主函数main();主函数main()3.主函数main()4.函数首部;函数体5.{;}6.顺序结构;选择结构;循环结构7..c;.obj;.exe1.2思考题1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构2.答:算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:①用自然语言表示算法;②用流程图表示算法;③用伪代码表示算法;④用程序设计语言表示算法。3.略4.略5.略1.3编程题1.答:#include"stdio.h"main(){floata=10,b=20,h=5,s;s=(a+b)*h/2;printf("s=%f",s);}2.答:#include"stdio.h"main(){printf("******************************");printf("*helloworld*");printf("******************************");} 285附录F课后题参考答案习题22.1单选题DBDCADCABBCA2.2填空题1.2.0000002.1;0.5000003.9;24.65.100;d6.(1)20(2)0(3)607.(1)10;6;4(2)6;9;15(3)3;60;838.55或"7"9.x=4;y=6;z=3;m=4632.3改错题(略)习题33.1单选题BDABCADCACBBA3.2填空题1.32.2613.104.2,1;互换a,b的值5.6.66.0037.78.5.0,4,c=39.i=10,j=2010.(1)65(2)65,A(3)3.14,123.46(4)3.141600e+000,1.234560e+002(5)8765.432100(6)8.765432e+003 285附录F课后题参考答案11.a=2b=5x=8.8y=76.34c1=65c2=9712.%d/%d;%d/%d=%.2fn3.3改错题(略)3.4编程题1.答:#include"stdio.h"main(){intx,y;scanf("%d%d",&x,&y);printf("ttxtyn");printf("十进制数t%dt%dn",x,y);printf("八进制数t%ot%on",x,y);printf("十六进制数t%Xt%xn",x,y);}2.答:#include"stdio.h"main(){charch;printf("请输入一个大写英文字母");scanf("%c",&ch);printf("大写英文字母是%cn",ch);printf("它的前导字符是%cn",ch-1);printf("它的后续字符是%cn",ch+1);}3.答:#include"stdio.h"main(){intx,a,b,c,y;printf("请输入一个三位整数n");scanf("%d",&x);a=x/100;b=(x-a*100)/10;c=x%10;y=c*100+b*10+a;printf("反向输出该整数:%dn",y);}}4.答:#include"stdio.h"main(){inthour;doublesalary,salaryday;scanf("%d,%lf",&hour,&salaryday);salary=hour*salaryday-hour*salaryday*0.1; 285附录F课后题参考答案printf("%8.2lfn",salary);}5.答:#include"stdio.h"main(){inta,b,c,t;printf("请输入三个整数n");scanf("%d%d%d",&a,&b,&c);printf("交换前a=%d,b=%d,c=%dn",a,b,c);t=a;a=c;c=b;b=t;printf("交换后a=%d,b=%d,c=%dn",a,b,c);}习题44.1单选题BADDDACBBBBA4.2填空题1.12.(1)a>0||b>0(2)x>0&&x<=10(3)a==1.5&&b==1.5&&c==1.5(4)p=3||college=="y"||college=="Y")&&age<=354.3改错题(略)4.4编程题1.答#include"stdio.h"#include"math.h"main(){doublea,b,c,p,area;scanf("%lf%lf%lf",&a,&b,&c);printf("三角形的三边为:%.llf,%.1lf,%.1lfn",a,b,c);if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2; 285附录F课后题参考答案area=sqrt(p*(p-a)*(p-b)*(p-c));printf("三角形的面积为%.2lfn",area);}elseprintf("不能构成三角形n");}2.答:#include"stdio.h"main(){intx,y;scanf("%d,%d",&x,&y);if(x*x+y*y>1000)printf("%dn",(x*x+y*y)/100);elseprintf("%dn",x+y);}3.答:#include"stdio.h"#include"math.h"main(){doublex,y;scanf("%lf",&x);if(x<-2)y=x*x-sin(x);elseif(x<=2)y=pow(2,x)+x;elsey=sqrt(x*x+x+1);printf("x=%.2lfy=%.2lfn",x,y);}4.答:#include"stdio.h"main(){longge,shi,qian,wan,x;scanf("%ld",&x);wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ printf("thisnumberisahuiwenn");elseprintf("thisnumberisnotahuiwenn");}5.答:#include"stdio.h"main(){floatp,w,s,d,f; 285附录F课后题参考答案scanf("%f,%,%f",p,s,w);if(s>3000)d=0.15elseif(s>=2000)d=0.1;elseif(s>=1000)d=0.08;elseif(s>=500)d=0.05;elseif(s>=250)d=0.02;elsed=0f=p*w*s*(1-d);printf("%f",f);}6.答:#include"stdio.h"main(){intyear,money;charx;printf("是否是本公司产品(y/n):");scanf("%c",&x);if(x=="y"||x=="Y"){printf("产品使用的年限:");scanf("%d",&year);if(year<=1)money=0;elseif(year<8)money=50;elsemoney=100;printf("产品保修额是:%dn",money);}else{money=200;printf("不是本公司产品,产品保修额是:%dn",money);}}7.答:#include"stdio.h"main(){intmoney,num1,num2;printf("请输入取款额(≤2000):");scanf("%d",&money);if(money>2000)printf("请输入取款额数≤2000!n");elseif(money%50==0){num1=money/100;num2=(money-num1*100)/50;printf("需支付100元:%d张n",num1);printf("需支付50元:%d张n",num2);}elseprintf("输入钱数必须是50的倍数!n");} 285附录F课后题参考答案习题55.1单选题CDABAABDDBDBCB5.2填空题1.202.3333.(1)i<10或i<=9(2)j%3!=04.(1)flag*(float)k/(k+1)或1.0*flag*k/(k+1)(2)flag=-flag5.(1)max=x(2)x!=-1(3)scanf("%d",&x)6.(1)x<=9或x<10(2)y=9-x5.3改错题(略)5.4编程题1.答:(1)for循环,其他略#include"stdio.h"main(){inti,s=0;for(i=1;i<=100;i++)s+=i*i;printf("%dn",s);}(2)for循环,其他略#include"stdio.h"main(){inti=1,p=1;doubles=1;do{s+=1.0/p;p*=++i;}while(1.0/p>1e-6);printf("%lf",s);}2.答:#include"stdio.h"main(){intm,n,t,a,b;scanf("%d,%d" ,&m,&n) ;if(m0;y--)s*=x;printf("%d,%d,%dn",s%10,s/10%10,s/100%10);}4.答:#include"stdio.h"main(){intx,y,z;for(x=1;x<20;x++)for(y=1;y<33;y++){z=100-x-y;if((z%3)==0&&(5*x+3*y+z/3)==100)printf("x=%d,y=%d,z=%dn",x,y,z);}}5.答:(a)#include"stdio.h"main(){intj,k;for(j=1;j<=4;j++){for(k=1;k<=4-j;k++)printf("");printf("****");printf("n");}}(b)#include"stdio.h"main(){intj,k ;for(j=1 ;j<=4 ;j++){for(k=1;k<=4-j;k++)printf("");for(k=1 ;k<=2*j-1 ;k++)printf("*") ;printf("n") ;}} 285附录F课后题参考答案6.答:程序分析:利用for循环控制在100~999之间,对每个数分解出个位、十位、百位。#includemain(){inti,j,k,n;printf("waterflower"numberis:");for(n=100;n<1000;n++){i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(n==i*i*i+j*j*j+k*k*k){printf("%-5d",n);}}printf("n");}7.答:#includemain(){intx;for(x=1000;x>=3;x--)if(x%3==1&&x%5==2&&x%7==3){printf("该校的学生人数是:%d人n",x);break;}}8.答:#includemain(){intx=12,i=1;while(1){if((x+20+i)==2*(x+i))break;i++;}printf("小明母亲在%d年后比小明的年龄大一倍n",i);printf("那时小明年龄是:%d岁,小明母亲年龄是:%d岁n",x+i,x+20+i);}习题66.1单选题DBCCBBDC 285附录F课后题参考答案6.2填空题1.c2.603.1000104.166.3编程题1.答:#include"stdio.h"#include"math.h"#defineF(a)a*a+sqrt(3*a*a+2*a+1)main(){floatx,f;scanf("%f",&x);f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x);printf("%fn",f);}习题77.1单选题BCADACCCDABCBDB7.2填空题1.(1)2345(2)10010(3)QuickC(4)1000001000001000001000001(5)Language(6)LanguageProgramming2.(1)j+=2(2)a[i]>a[j]3.(1)i=1(2)x[i-1]7.3改错题(略)7.4编程题1.答:#defineN10#include"stdio.h"main(){inta[N]={1,2,3,4,5,6,7,8,9,10,osum=0,qsum=0,j;for(j=0;j<10;j++)if(j%2)qsum+=a[j]; 285附录F课后题参考答案elseosum+=a[j];printf("osum=%d,qsum=%dn",osum,qsum);}2.答:#defineN10#include"stdio.h"main(){inta[N]={10,20,30,40,50,60,70,80,90},j,k,x;scanf("%d",&x);for(j=0;jj;k--)a[k]=a[k-1];a[j]=x;}for(j=0;jc2[j])printf("%dn",1);if(c1[j]="A"&&a[j][k]<="Z")n[0]++;elseif(a[j][k]>="a"&&a[j][k]<="z")n[1]++;elseif(a[j][k]>="0"&&a[j][k]<="9")n[2]++;elseif(a[j][k]=="")n[3]++;elsen[4]++;for(j=0;j<5;j++)printf("%4d",n[j]);}习题88.1单选题DBDACBACCC8.2填空题1.(1)2,1(2)10#30#(3)FOUR,P(4)601,1,1,1,13,3,3,3,310001010100010001010100012.(1)49(2)2(3)2(4)(5)8.3改错题(略)8.4编程题1.答:#include"stdio.h"main(){intn1,n2,n3,t;int*p1,*p2,*p3;printf("pleaseinput3number:n1,n2,n3:");scanf("%d,%d,%d",&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(*p1>*p2){t=*p1;*p1=*p2;*p2=t;}if(*p1>*p3){t=*p1;*p1=*p3;*p3=t;}if(*p2>*p3){t=*p2;*p2=*p3;*p3=t;}printf("thesortednumbersare:%d,%d,%dn",n1,n2,n3);} 285附录F课后题参考答案2.答:#include"stdio.h"#defineN3main(){inta[N],*p=a;for(;p-a=0;p--)printf("%d",*p);}3.答:#include"stdio.h"main(){inta[10];intj,minl=0,maxl=0;for(j=0;j<10;j++)scanf("%d",a+j);for(j=0;j<10;j++){if(a[maxl]<*(a+j))maxl=j;if(a[minl]>*(a+j))minl=j;}j=a[0];a[0]=a[minl];a[minl]=j;j=a[9];a[9]=a[maxl];a[maxl]=j;for(j=0;j<10;j++)printf("%d",*(a+j));}4.答:输入阵列如下:123456789101112输出阵列如下:121110987654321#defineM3#defineN4#include"stdio.h"main(){inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=&a[0][0],t;for(k=0,j=M*N-1;k0)t=j;c=*(str1+t);*(str1+t)=*(str1+k);*(str1+k)=c;}for(k=0;k<5;k++)puts(str1[k]);}习题99.1单选题CBBADDBCCDDCABCBCCBADCDAB 285附录F课后题参考答案9.2填空题1.1202.x3.3,2,2,34.fac/i5.8,176.97.1.0/(i*i)8.fun-in:30,20,10fun-end:1015,35,105010,20,309.01234510.9363611.(1)r+b[k](2)*x12.7531913.1514.(1)*x(2)t15.(1)""(2)n++16.0249.3改错题(略)9.4编程题1.答:voidzhuan(){charch;while((ch=getchar())!="n"){if(ch>="a"&&ch<="z")ch=ch-32;putchar(ch);}}2.答:doubleexpp(intn){intk,fac=1;doublesum=1;for(k=1;k<=n;k++){fac*=k;sum+=1.0/fac;}return(sum);}3.答:intxy3(intx,inty) 285附录F课后题参考答案{intk,num=1;for(k=1;k<=y;k++)num*=x;num=num%1000;returnnum;}4.答:intage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}5.答:#include"stdio.h"main(){inta,b,c,d;voidfun(inta,intb,int*c,int*d);scanf("%d%d",&a,&b);fun(a,b,&c,&d);printf("%d%d",c,d);}voidfun(inta,intb,int*c,int*d){if(b){*c=a/b;*d=a%b;}}6.答:#include"stdio.h"main(intargc,char*argv[]){intk;printf("argc=%dn",argc);for(k=1;k