版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言程序设计与实验指导》参考答案课后练习题部分第1章1.选择题1.C2.D3.C4.C5.B6.A7.A2.判断题1.×2.√3.×4.√5.×6.×第2章1.选择题1.C2.A3.B4.B5.C6.B7.D8.C9.A10.B11.B12.D13.B14.D15.C16.A17.A18.C19.D20.C21.A22.B23.D24.C2.判断题1.×2.√3.×4.×5.×6.√7.√8.×9.×10.×11.√12.√第3章1.选择题1.D2.C3.A4.C5.B6.D7.A8.A9.D10.B11.B12.A13.C14.A15.D16.D17.D18.A19.C20.D2.判断题1.√2.√3.×4.×5.√6.×7.√8.×9.√10.×11.√12.√13.×14.√15.×第4章1.选择题1.C2.B3.B4.B5.D6.D7.C8.A9.D10.D11.D12.B13.B14.B15.D16.C17.C18.D19.A20.A2.判断题1.×2.×3.×4.√5.×6.×7.×8.×9.√10.×第5章1.选择题1.C2.B3.A4.B5.D6.A7.A8.A9.A10.A11.D12.D13.A14.B15.A16.D17.C18.B19.A20.A2.判断题1.×2.×3.√4.√5.×6.√7.√8.×9.×10.×第6章1.选择题1.C2.B3.C4.D5.C6.B7.D8.B9.C10.B11.D12.D13.C14.D15.C16.D17.B18.D19.A20.C21.D22.A23.B24.D2.判断题1.×2.√3.×4.×5.×6.√7.√8.√9.√10.×第7章1.选择题1.B2.A3.C4.D5.A6.C7.C8.C9.B10.A11.C12.C13.B14.A15.D16.D17.D18.D19.B20.A21.A22.B23.A24.B25.D26.D27.B2.判断题1.×2.√3.√4.√5.×6.×7.×8.×9.×10.√第8章1.选择题1.C2.B3.C4.B5.C6.B7.A8.B9.C10.C11.A12.A13.D14.A15.A16.A17.B18.C19.A20.B2.判断题1.×2.×3.×4.√5.√第9章1.选择题1.B2.D3.A4.D5.C6.D7.A8.C2.判断题1.√2.√3.×4.×5.√6.×第10章1.选择题1.C2.C3.C4.D5.B6.B
实验部分实验一改错题(1)eq\o\ac(○,1)错误语句:#includestdio.h;;改正语句:#include<stdio.h>。eq\o\ac(○,2)错误语句:main();;改正语句:main()。eq\o\ac(○,3)错误语句:printf("%f\n",s);改正语句:printf("%f\n",s);。(2)eq\o\ac(○,1)错误语句:main;改正语句:main()。eq\o\ac(○,2)错误语句:A=2.0;B=3.0;C=4.0;;改正语句:a=2.0;b=3.0;c=4.0;。编程题参考答案#include<stdio.h>voidmain(){floats,i,k;i=0.0175;s=5000;k=s*i;s=s+k;printf("本金加利息是:%f\n",s);}运行结果为:本金加利息是:5087.500000。实验二程序填空题(1)inta,b,sum;sum=a+b★程序运行结果为:sumis579。(2)x%10x/10%10x/100当输入295时,输出结果为:592。(3)★程序运行结果为:i=9,j=11,m=9,n=10I=8,j=10,m=9,n=10。(4)★程序运行结果为:ch1+ch2=145,ch=-111,c=145,a=145。改错题(1)eq\o\ac(○,1)错误语句:chara,b,c;改正语句:chara,b,c;。eq\o\ac(○,2)错误语句:intp;;改正语句:floatp;。eq\o\ac(○,3)错误语句:p=(a+b+c)/3;;改正语句:p=(a+b+c)/3.0;。编程题参考答案#include<stdio.h>main(){ inta,b,c,d; scanf("%d%d",&a,&b); c=a/b; d=a%b; printf("c=%d,d=%d\n",c,d);}当输入1500和350时,运行结果为:c=4,d=100。参考答案#include<stdio.h>main(){ floatc,f; scanf("%f",&f); c=(f-32)*5/9; printf("摄氏温度为%f\n",c);}当输入100时,运行结果为:摄氏温度为37.777778。实验三1.程序填空题(1)%f%.2f★程序运行结果为:8182.600000,3.14。(2)c1+32%c的ASCII码是%d\n%c的ASCII码是%d\n(3)★程序运行后应输入:a=3,b=4x=6.5y=8.72Mm。★程序的输出结果为:a=3,b=4,x=6.50,y=8.72,c1=M,c2=m。2.改错题(1)eq\o\ac(○,1)错误语句:scanf("%d,%d,%d",a,b,c);;改正语句:scanf("%d,%d,%d",&a,&b,&c);。eq\o\ac(○,2)错误语句:s=1/2*(a+b+c);;改正语句:s=1.0/2*(a+b+c);。3.编程题(1)参考程序如下:#include<stdio.h>#definePI3.14voidmain(){floatr,h,s,v;r=3.0;h=5;s=PI*r*r;v=s*h;printf("圆柱体底面圆的面积是:%.2f\n圆柱体的体积是:%.2f\n",s,v);}程序的运行结果是:圆柱体底面圆的面积是:28.26圆柱体的体积是:141.30(2)参考程序如下:#include<stdio.h>voidmain(){floatprin,rate_dep,rate_loan,inter_dep,inter_loan,inter_dif;/*prin代表存款本金,rate_dep代表存款利率,rate_loan代表贷款利率,inter_dep代表存款利息,inter_loan代表贷款利息,inter_dif代表存贷利差*/rate_dep=0.015;rate_loan=0.0435;scanf("%f",&prin);inter_dep=prin*rate_dep;inter_loan=prin*rate_loan; inter_dif=prin*(rate_loan-rate_dep);//或inter_dif=inter_loan-inter_dep;printf("存入%.2f元一年期定期存款,到期后利息是%.2f元\n银行获得的利差是%.2f\n",prin,inter_dep,inter_dif);}程序运行后若输入:10000程序运行结果如下:存入10000.00元一年期定期存款,到期后利息是150.00元银行获得的利差是285.00实验四1.程序填空题(1)a=b;b=t;★程序运行后输入值:6.5,3.2。可以输入其他值,答案不唯一★程序的输出结果为:3.20,6.50。输入值不同,输出值也不同(2)getchar()(ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')2.改错题(1)eq\o\ac(○,1)错误语句:scanf("%d",year);;改正语句:scanf("%d",&year);。eq\o\ac(○,2)错误语句:if(year%4==0||year%100!=0);改正语句:if(year%4==0&&year%100!=0)。eq\o\ac(○,3)错误语句:if(leap=1);改正语句:if(leap==1)。(2)eq\o\ac(○,1)错误语句:scanf("%d%d%d",&a,&s,&b);;改正语句:scanf("%d%c%d",&a,&s,&b);。eq\o\ac(○,2)错误语句:switch(s);;改正语句:switch(s)。eq\o\ac(○,3)错误语句:case'/':c=a\b;;改正语句:case'/':c=a/b;。3.编程题(1)参考程序如下:#include<stdio.h>voidmain(){ intnum; scanf("%d",&num); if(num%2==1) printf("%d是一个奇数!\n",num); else printf("%d是一个偶数!\n",num);}程序运行后若输入:19程序的运行结果是:19是一个奇数!程序运行后若输入:20程序的运行结果是:20是一个偶数!(2)参考程序如下:#include<stdio.h>voidmain(){ intx,y;//假设x,y是一个整数,如果是实数,则用float或double定义 scanf("x=%d",&x); if(x<0) y=-x; elseif(x<5) y=x*x+1; else y=3*x-10; printf("y=%d\n",y);}程序运行后若输入:x=-5程序的运行结果是:y=5程序运行后若输入:x=3程序的运行结果是:y=10程序运行后若输入:x=6程序的运行结果是:y=8(3)参考程序如下:#include<stdio.h>voidmain(){ intscore; chargrade; scanf("%d",&score); if(score<0||score>100) printf("您输入的数据有误,请重新输入0~100之间的数!\n"); else { switch(score/10) { case10: case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; default:grade='E'; } printf("相应的等级为%c\n",grade); }}程序运行后若输入:98程序的运行结果是:相应的等级为A程序运行后若输入:68程序的运行结果是:相应的等级为D程序运行后若输入:51程序的运行结果是:相应的等级为E思考:如果不用switch语句,可否用if…elseif…else语句完成本程序,请自行尝试!实验五1.程序填空题(1)0i+2d★程序运行结果为:s=2500。(2)t*ii++i<=10★程序运行结果为:sum=4037913。2.改错题(1)eq\o\ac(○,1)错误语句:intk;;改正语句:intk=1;。eq\o\ac(○,2)错误语句:num\=10;;改正语句:num/=10;。eq\o\ac(○,3)错误语句:while(num);改正语句:while(num);。3.编程题(1)参考答案#include<stdio.h>voidmain(){intn,i;floats;i=1;s=0;printf("请输入一个整数:");scanf("%d",&n);while(i<=n){s=s+1.0/i;i++;}printf("结果是:%f\n",s);}当输入n为10时,运行结果为:结果是:2.928968。参考答案#include<stdio.h>voidmain(){inti,a,b,c;i=100;printf("水仙花数有:");while(i<=999){ a=i%10;//i的个位 b=i/10%10;//i的十位c=i/100;//i的百位 if(a*a*a+b*b*b+c*c*c==i) printf("%4d",i); i++;}printf("\n");}运行结果为:水仙花数有:153370370407。参考答案Fibonacci数列的特点是从第3个数开始,这个数是其与之最近的前两个数之和。参考程序如下:#include<stdio.h>voidmain(){intf1,f2,f3,i;f1=f2=1;printf("Fibonacci数列为:\n");printf("%-6d%-6d",f1,f2);i=3;while(i<=20){ f3=f1+f2;f1=f2;f2=f3;printf("%-6d",f3); if(i%5==0)printf("\n");i++; }printf("\n");}运行结果如下:Fibonacci数列为:11235813213455891442333776109871597258441816765实验六程序填空题(1)i<=n||1.0★程序运行结果为:结果为1.03095。(2)m<=30m%i==0m-1★程序运行结果为:2357111317192329。改错题(1)eq\o\ac(○,1)错误语句:for(i=2;i<m;i+1);改正语句:for(i=2;i<=m;i++)。eq\o\ac(○,2)错误语句:y+=f/(i*i);;改正语句:y+=1.0*f/(i*i);。编程题(1)参考答案#include<stdio.h>voidmain(){ inti,n,t=1; floats=1; printf("请输入一个整数:"); scanf("%d",&n); for(i=2;i<=n;i++) { t=t+i; s=s+1.0/t; } printf("s=%f\n",s); }(2)参考答案#include<stdio.h>voidmain(){ intm,n,a,i; printf("请输入两个整数:"); scanf("%d%d",&m,&n); a=m<n?m:n; for(i=a;i>=1;i--) if(m%i==0&&n%i==0)break; printf("%d和%d的最大公约数是%d\n",m,n,i); }(3)参考答案#include<stdio.h>voidmain(){inti,s;s=1;for(i=10;i>=2;i--)s=s*2+2;printf("原来采摘的桃子数为%d\n",s);}运行结果:原来采摘的桃子数为1534实验七1.程序填空题(1)scanf("%d",&a[i])i=0;i<10;i++(i+1)%5==0(2)1i=2f[i]=f[i-1]+f[i-2]★程序运行结果为:11235813213455891442333776109871597258441816765(3)a[i]ia[maxi]=a[0]改错题(1)eq\o\ac(○,1)错误语句:count=1;改正语句:count=0。eq\o\ac(○,2)错误语句:scanf("%d",num[i]);;改正语句:scanf("%d",&num[i]);。eq\o\ac(○,3)错误语句:if(num[i]%2=0);改正语句:if(num[i]%2!=0)。(2)eq\o\ac(○,1)错误语句:i<10;改正语句:i<9。eq\o\ac(○,2)错误语句:i++;改正语句:i--。eq\o\ac(○,3)错误语句:a[i-1]=a[i];改正语句:a[i+1]=a[i]。编程题参考答案#include<stdio.h>voidmain(){inti;floats[5],max,min;for(i=0;i<5;i++)scanf("%f",&s[i]);max=min=s[0];for(i=1;i<5;i++){if(max<s[i])max=s[i];if(min>s[i])min=s[i];}printf("该数组的最大值是%f,最小值是%f\n",max,min);}当输入为4.52.345.81.234.6时,运行结果为:该数组的最大值是45.8,最小值是1.2。参考答案#include<stdio.h>voidmain(){inti,score[10];floatsum=0,ave;for(i=0;i<10;i++){scanf(“%d”,&score[i]);sum=sum+score[i];}ave=sum/10;pintf(“%f\n”,ave);for(i=0;i<10;i++)if(score[i]<ave)printf(“%5d”,score[i]);}参考答案#include<stdio.h>voidmain(){intf[10],i,j,t;for(i=0;i<10;i++)scanf(“%d”,&f[i]);for(i=0,j=9;i<j;i++,j--){t=f[i];f[i]=f[j];f[j]=t;}for(i=0;i<10;i++)printf(“%4d”,f[i]);}运行结果如下:若输入数组元素为:2346891334110,输出为考答案#include<stdio.h>voidmain(){inta[80],i,j,m;scanf(“%d”,&m);for(i=1,j=0;i<=m;i++){if(i%7==0||i%11==0){a[j]=i;j++;}}for(i=0;i<j;i++)printf(“%4d”,a[i]);}实验八1.程序填空题(1)a[i][j]!=a[j][i]breakflag==1★若输入矩阵为12324-53-56则程序运行结果为:该矩阵是对称矩阵(2)1a[i-1][j]+a[i-1][j-1]i==j★程序运行结果为:1112133146415101051615201561721353521718285670562881193684126126843691改错题(1)eq\o\ac(○,1)错误语句:j<=3;改正语句:j<3。eq\o\ac(○,2)错误语句:max>a[i][j];改正语句:max<a[i][j]。(2)eq\o\ac(○,1)错误语句:inta[3][3],i,j,sum1,sum2;;改正语句:inta[3][3],i,j,sum1=0,sum2=0;。eq\o\ac(○,2)错误语句:sum2+=a[i][3-i];;改正语句:sum2+=a[i][2-i];。eq\o\ac(○,3)错误语句:if(sum1=sum2);改正语句:if(sum1==sum2)。编程题参考答案#include<stdio.h>voidmain(){inta[3][3],i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);for(i=0;i<3;i++){for(j=0;j<=i;j++)printf(“%3d”,a[i][j]);printf(“\n”);}}参考答案#include<stdio.h>voidmain(){inta[3][3],m,i,j,flag=0;printf(“请输入二维数组中的元素:\n”);for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);printf(“请输入一个整数:\n”);scanf(“%d”,&m);for(i=0;i<3;i++){for(j=0;j<3;j++)if(m==a[i][j]){flag=1;break;}if(flag==1)break;}if(flag==1)printf(“该数存在数组中”);elseprintf(“该数不在数组中”);}参考答案#include<stdio.h>voidmain(){inta[3][3]={1,2,3,4,5,6,7,8,9},b[3][3]={1,0,1,2,4,6,3,6,9},c[3][3],i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)c[i][j]=a[i][j]+b[i][j];for(i=0;i<3;i++){for(j=0;j<3;j++)printf(“%5d”,c[i][j]);printf(“\n”);}}程序运行结果为:2246912101418参考答案#include<stdio.h>voidmain(){inta[4][4]={1,2,4,5,8,6,3,1,7,5,2,8,9,4,3,6},i,j,sum=0;for(j=0;j<4;j++)sum=sum+a[0][j]+a[3][j];for(i=1;i<3;i++)sum=sum+a[i][0]+a[i][3];printf(“周边元素之和为:%d”,sum);}程序的运行结果为:周边元素之和为:58实验九程序填空题strlen(ch1)-1ch1[i]=ch2[j]'\0'改错题(1)eq\o\ac(○,1)错误语句:gets(&ch);;改正语句:gets(ch);。eq\o\ac(○,2)错误语句:for(i=0;ch[i]=='\0';i++);改正语句:for(i=0;ch[i]!='\0';i++)。eq\o\ac(○,3)错误语句:elseif(ch[i]>'a'&&ch[i]<'z');改正语句:elseif(ch[i]>'a'&&ch[i]<='z')。编程题参考答案#include<stdio.h>voidmain(){charch[80];inti;gets(ch);for(i=0;ch[i]!=’\0’;i++);printf(“字符串的长度为%d”,i);}当输入字符串”abcdrt56”时,运行结果为:字符串的长度为8。参考答案#include<stdio.h>voidmain(){charch[80];inti;gets(ch);for(i=0;ch[i]!=’\0’;i++)if(ch[i]>=’a’&&ch[i]<=’z’)ch[i]=ch[i]-32;elseif(ch[i]>=’A’&&ch[i]<=’Z’)ch[i]=ch[i]+32;puts(ch);}若输入字符串:”ABedr56“,运行结果为:abEDR56。参考答案#include<stdio.h>#include<string.h>voidmain(){charch[80];inti,j,flag=0;gets(ch);for(i=0,j=strlen(ch)-1;i<j;i++,j--)if(ch[i]!=ch[j]){flag=1;break;}if(flag==1)printf(“该字符串不是回文\n”);elseprintf(“该字符串是回文\n”);}若输入字符串”level”,运行结果如下:该字符串是回文。实验十1.程序填空题(1)intfun(intn)fun(num)n/1001★若输入396,程序运行结果为:yes!;★若输入369,程序运行结果为:no!。n==0n==1||n==2fun(n-1)+fun(n-2)★若输入20,程序运行结果为:0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181。2.改错题(1)eq\o\ac(○,1)错误语句:f(doublex);改正语句:doublef(doublex)。eq\o\ac(○,2)错误语句: returns;改正语句: returns;。3.编程题(1)参考答案doublefun(intn){inti,sum=0;doubles;for(i=1;i<n;i++) if(i%3==0&&i%7==0) sum=sum+i; s=sqrt(sum); returns;}(2)参考答案floatfun(intm,intn){inti;longs1=1,s2=1,s3=1;floatp;for(i=1;i<=m;i++)s1=s1*i;for(i=1;i<=n;i++)s2=s2*i;for(i=1;i<=m-n;i++)s3=s3*i;p=s1/(s2*s3);returnp;}实验十一1.程序填空题(1)nelsea,b(2)intx[1000]sum=sum+x[i] average=sum/n2.改错题(1)eq\o\ac(○,1)错误语句:#defineFU(m,n)(m/n);改正语句:#defineFU(m,n)m/n。eq\o\ac(○,2)错误语句: Return(value);;改正语句: return(value);。3.编程题(1)参考答案doublefun(doublea[],intn){doublemax=a[0],min=a[0],sum=0,aver;inti;for(i=0;i<n;i++){ sum=sum+a[i]; if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i];}sum=sum-max-min;aver=sum/(n-2);returnaver;}(2)参考答案intfun(intscore[],intm,intbelow[]){ doublesum=0,aver; inti,j; for(i=0;i<m;i++) sum=sum+score[i]; aver=sum/m; for(i=0,j=0;i<m;i++) if(score[i]<aver) below[j++]=score[i];returnj;}(3)参考答案intfun(inta[M][N]){ inti,j,sum=0; for(j=0;j<N;j++)sum=sum+a[0][j]+a[M-1][j];for(i=1;i<M-1;i++)sum=sum+a[i][0]+a[i][N-1];returnsum;}实验十二1.程序分析题(1)a[0]=p[5]或者*q=a[10]★程序运行结果为:611。(2)★程序运行结果为:*q=6。★程序中循环体执行次数为:5。2.程序填空题pmax=p*maxmax-a+1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年河南省南阳市部分学校高二上学期10月阶段考试政治试卷
- 2025-2026学年河北省邯郸市部分学校高二上学期期中考试政治试题(解析版)
- 设备维护管理的高效工作计划模板
- 从产品到品牌:雪花的品牌塑造之路
- 外贸谈判技巧与策略培训资料
- 电子竞技领域岗位应聘的技巧和经验
- 房地产企业策划岗位面试技巧指导
- 中石油人力资源部门管理方案与时间安排
- 数据挖掘技术在金融领域的应用探讨
- 雨课堂学堂在线学堂云《管理学(银川科技学院)》单元测试考核答案
- 高温合金和高端金属功能材料生产项目环评
- 旅游概论中职PPT完整全套教学课件
- 大学生人际沟通艺术与技巧PPT全套完整教学课件
- 双溪课程评量表
- 大切诺基用户手册书(可编辑)
- 《农业统计学复习资料》
- 【科目一考试】河南省延津县驾校模拟考试练习300题
- GB/T 18380.33-2022电缆和光缆在火焰条件下的燃烧试验第33部分:垂直安装的成束电线电缆火焰垂直蔓延试验A类
- 中国近现代史纲要(专题一)
- PE工程师培训教材课件
- 土木工程结构试验与检测课件
评论
0/150
提交评论