C语言程序设计习题3.docx
- 文档编号:29293566
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:21
- 大小:64.69KB
C语言程序设计习题3.docx
《C语言程序设计习题3.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题3.docx(21页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题3
习题3参考解答
1.什么是算法?
常用描述算法的工具有哪些?
解:
所谓算法,就是计算机解决某一个问题的具体方法和步骤。
常用描述算法的工具有流程图、N-S图。
2.试用流程图表示求3个数中的最大数的算法。
解:
流程图如图1-1所示。
3.什么是结构化程序设计?
它的主要内容是什么?
解:
结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主
3种基本控制结构构造。
种基本控制结构构造程序,任何程序都可由顺序、选择、循环这
4.从键盘输入3个整数,按照从小到大的顺序输出。
解:
#include
intmain()
inta,b,c,temp;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp;}if(b>c){temp=b;b=c;c=temp;}printf("%d,%d,%d\n",a,b,c);
return0;
程序运行情况如下:
12,8,29/
8,12,29
5
5(F32)
要求要有文字说明,取两位小数。
解:
#include
intmain()
floatf,c;
printf("请输入一个华氏温度:
\n");
scanf("%f",&f);
c=5*(f-32)/9;
printf("%.2f\n",c);
return0;
程序运行情况如下:
请输入一个华氏温度:
36/
2.22
解:
#include
intmain()
scanf("%d",&num);
a=num/100;
b=(num-a*100)/10;
c=num-a*100-b*10;
printf("%d,%d,%d\n",a,b,c);
return0;
程序运行情况如下:
123/
1,2,3
7.小红有面值1分的硬币638枚,可以兑换成几元几角剩余几分?
说明:
100枚1分的硬币可以兑换成1元,10枚1分的硬币可以兑换成1角。
兑换原则是面额从大到小。
解:
#include
intmain()
inta=638;
intyuan;
intjiao;
intfen,temp;
yuan=a/100;
temp=a%100;
jiao=temp/10;
fen=temp%10;
printf("1元的数量:
%d\n",yuan);
printf("1角的数量:
%d\n",jiao);
printf("1分的数量:
%d\n",fen);
return0;
程序运行结果如下:
1元的数量:
1角的数量:
1分的数量:
8.设圆柱的半径为2.5,
圆柱的高为4,求圆柱的体积。
用scanf函数输入数据,printf
函数输出计算结果,输出时要求有文字说明,取两位小数。
解:
#include
#definePI3.1415926
intmain()
floatr,h,v;
printf("Pleaseinputr,h:
");
scanf("%f,%f",&r,&h);
v=PI*r*r*h;
printf("半径为:
%.2f,高为:
%.2f的圆柱体体积为:
%.2f\n",r,h,v);
return0;
程序运行情况如下:
Pleaseinputr,h:
2.5,4/
半径为:
2.50,高为:
4.00的圆柱体体积为:
78.54
9.输入三角形的三边,计算三角形的面积。
要求:
对输入的
3个边长进行判断,如果
能构成三角形,则计算三角形的面积;否则,则显示“构不成三角形!
”信息。
解:
#include
#include
intmain()
inta,b,c;
floats,area;
scanf("%d,%d,%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
s=(float)(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("面积为:
%.2f\n",area);
else
printf("边长分别为%d、%d、%d的三边构不成三角形!
\n",a,b,c);
return0;
程序运行情况如下:
3,4,6/
面积为:
5.33
3,6,12/边长分别为3、6、12的三边构不成三角形!
10.设计一个C语言程序,求5个数中的最大数和最小数。
解:
#include
inta,b,c,d,e,max,min;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
max=min=a;
if(b>max)max=b;
if(b if(c>max)max=c; if(c if(d>max)max=d; if(d if(e>max)max=e; if(e printf("max: %d,min: %d\n",max,min); return0; 程序运行情况如下: 25689/max: 9,min: 211.判断输入的字符属于哪一类字符: 大写字母、小写字母、数字还是其他字符。 解: #include charch; scanf("%c",&ch); if(ch>=48&&ch<=57) printf("该字符为数字! "); elseif(ch>=65&&ch<=91) elseif(ch>=97&&ch<=122) else return0; 程序运行情况如下: 2/ 该字符为数字! 12.用if语句和switch语句分别编写程序,实现以下功能: 从键盘输入数字1,2,3,4,分别显示Excellent,Good,Pass,Fail。 输入其他字符时 显示Error。 解: /*用if语句编写程序*/ #include intmain() charch; scanf("%c",&ch); if(ch=='1') printf("Excellent\n"); elseif(ch=='2') printf("Good\n"); elseif(ch=='3') printf("Pass\n"); elseif(ch=='4') printf("Fail\n"); else printf("Error\n"); return0; 程序运行情况如下: 1/ Excellent /*用switch语句编写程序*/ #include intmain() charch; scanf("%c",&ch); switch(ch) case'1': printf("Excellent\n");break; case'2': printf("Good\n");break; case'3': printf("Pass\n");break; case'4': printf("Fail\n");break; default: printf("Error\n"); 程序运行情况如下: 1/ Excellent 起征点是2000元,2000~3000 13.假设国家对个人收入所得税是按这样的标准进行的: 元为5%,3000~5000元为15%,5000~10000元为20%,10000元以上为30%。 编程输入 工资,计算实际工资所得及税金。 解: #include intmain() intgz; floatsj; scanf("%d",&gz); if(gz<2000) printf("不需要纳税! \n"); return; elseif(gz<3000) sj=gz*0.05; elseif(gz<5000) sj=gz*0.15; elseif(gz<10000) sj=gz*0.2; else sj=gz*0.3; printf("工资为: %d,税金为: %.2f\n",gz,sj); return0; 程序运行情况如下: 不需要纳税! 2800/ 工资为: 2800,税金为: 140.00 4500/ 工资为: 4500,税金为: 675.00 8500/ 工资为: 8500,税金为: 1700.00 20000/ 工资为: 20000,税金为: 6000.00 14.求方程ax2+bx+c=0的根。 说明: 当b2-4ac>0时,有两个不等的实根;当b2-4ac=0时,有两个相等的实根;当 b2-4ac<0时,有两个虚根。 解: #include #include intmain() inta,b,c; doubledelt,x1,x2; scanf("%d%d%d",&a,&b,&c); delt=b*b-4*a*c; if(delt==0) printf("该方程有两个相等的实根! "); x1=x2=-(double)b/(2*a); printf("%.2f,%.2f\n",x1,x2); else if(delt>=0) x1=(-b+sqrt(delt))/(2*a); x2=(-b-sqrt(delt))/(2*a); printf("%.2f,%.2f\n",x1,x2); else printf("该方程无实根! \n"); 程序运行情况如下: 该方程无实根! -0.50,-1.00 解: #include inti; for(i=1;i<=100;i++) if(i%5==0||i%7==0) printf("%5d",i); return0; 程序运行结果如下: 557101415 5556606365 20212528303540424549507075778084859091959810016.计算sum=1+11+111+1111+11111。 解: #include intmain() inti,t=0,s=0; for(i=1;i<=5;i++) t=t*10+1; printf("%d\n",t); s=s+t; printf("%d",s); return0; 程序运行结果如下: 11 111 1111 11111 1234517.输入两个正整数m和n求出它们的最大公约数和最小公倍数。 解: #include intm,n,t,gcd,gcm; inta,b; scanf("%d%d",&m,&n); t=m%n; a=m;b=n; while(t! =0) m=n; n=t; t=m%n; gcd=n; gcm=a*b/gcd; printf("%d和%d的最大公约数为: %d,最小公倍数为: %d\n",a,b,gcd,gcm); return0; 程序运行情况如下: 2515/ 25和15的最大公约数为: 5,最小公倍数为: 7518.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 解: #include charch; intm=0; intk=0; intn=0; intt=0; ch=getchar(); while(ch! ='\n') k++; elseif(ch>=48&&ch<=57) n++; elseif(ch>=65&&ch<=90||ch>=97&&ch<=122) m++; else t++; ch=getchar(); printf("字母的个数为: %d\n",m); printf("空格的个数为: %d\n",k); printf("数字的个数为: %d\n",n); printf("其他字符的个数为: %d\n",t); return0; 程序运行情况如下: 123abcdefghyyyy;;;;;11166@#%/ 字母的个数为: 12 空格的个数为: 数字的个数为: 其他字符的个数为: 11 19.从键盘输入10个学生的成绩,试统计出他们的成绩总和及平均值。 解: #include intmain() floatcj,sum=0,aver; inti; for(i=1;i<=10;i++) scanf("%f",&cj); sum=sum+cj; aver=sum/10; printf("sum=%.2f,aver=%.2f",sum,aver); return0; 程序运行情况如下: 68757456787581767585/ sum=743.00,aver=74.30 20.猴子吃桃问题。 猴子第一天摘下了若干桃子,当即吃了一半,还不过瘾,又多吃 了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第4天早上想要再吃时,只剩下一个桃子了。 求第一天猴子共摘了多少桃子。 解: #include intmain() intn=1; inti; for(i=9;i>=1;i--) n=2*(n+1); printf("%d\n",n); return0; 程序运行结果如下: 153=13+53+33 10-6为止。 190 382 766 1534 21.打印出所有的“水仙花数”。 所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如,153就是一个水仙花数,因为 解: #include intmain() inti,bw,sw,gw; printf("水仙花数是: "); for(i=100;i<999;i++) bw=i/100; sw=(i-bw*100)/10; gw=i-bw*100-sw*10; if(i==bw*bw*bw+sw*sw*sw+gw*gw*gw) printf("%5d",i); printf("\n"); return0; 程序运行结果如下: 水仙花数是: 153370371407 22.用泰勒级数求e的近似值,直到最后一项小于 e=1+1/1! +1/2! +1/3! +…+1/n! 解: #include intmain() inti=1; longf=1; doublet=1,e=1; while(t>=1e-6) e=e+t; i=i+1; f=f*i; t=(double)1/f; printf("%.3lf\n",e); return0; 程序运行结果如下: 2.718 23.输入一个整数,分解各位数字。 例如,输入“ 1298”,输出“8-9-2-1-”。 请编写一 个C语言程序解决该问题。 解: #include intmain() intnum,n1,n2; scanf("%d",&num); n2=num; while(n2! =0) n2=n2/10; printf("%d-",n1); printf("\n"); return0; 程序运行情况如下: 1298/ 8-9-2-1- 24.有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。 解: #include intmain() inti; floatf,s=0; floatf1=1; floatf2=1; for(i=1;i<=20;i++) f=f1+f2; f1=f2; f2=f; s=s+f2/f1; printf(”分数序列之和为: %f",s); return0; 程序运行结果如下: 分数序列之和为: 32.660259 25.打印出以下图案。 ******* 解: #include intmain() inti,j; for(i=1;i<=4;i++) for(j=1;j<20-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); for(i=3;i>=1;i--) for(j=1;j<20-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); return0; C语言程序。 26.百马百担问题: 有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮 1担,问用大马、中马、小马各多少匹? 请设计解决该问题的 解: #include intmain() intdm; for(dm=0;dm<=33;dm++) intzm; for(zm=0;zm<=50;zm++) intxm; xm=100-dm-zm; if(3*dm+2*zm+xm/2==100)printf("%d,%d,%d\n",dm,zm,xm); return0; 程序运行结果如下: 1,32,67 2,30,68 4,27,69 5,25,70 7,22,71 8,20,72 10,17,73 11,15,74 13,12,75 14,10,76 16,7,77 17,5,78 19,2,79 20,0,80 27.计算1~10十个整数的阶乘和,即计算1! +2! +3! +…+9! +10! 解: #include intmain() inti,j; longfact,sum=0; for(i=1;i<=10;i++) fact=1; for(j=1;j<=i;j++) fact=fact*j; sum=sum+fact; printf("sum: %ld\n",sum); return0; 程序运行结果如下: sum: 4037913
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题