C语言程序设计习题3.docx
- 文档编号:12691368
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:27
- 大小:51.17KB
C语言程序设计习题3.docx
《C语言程序设计习题3.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题3.docx(27页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题3
..
习题3参考解答
1.什么是算法?
常用描述算法的工具有哪些?
解:
所谓算法,就是计算机解决某一个问题的具体方法和步骤。
常用描述算法的工具有流程图、N-S图。
2.试用流程图表示求3个数中的最大数的算法。
解:
流程图如图1-1所示。
图1-1求3个数中的最大数的流程图
3.什么是结构化程序设计?
它的主要内容是什么?
解:
结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主'.
..
的详细设计的基本原则。
它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用3种基本控制结构构造程序,任何程序都可由顺序、选择、循环这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.输入一个华氏温度F,要求输出摄氏温度C。
公式为
5(F?
C?
32)
9要求要有文字说明,取两位小数。
解:
#include
intmain()
{
floatf,c;
牰湩晴尨请输入一个华氏温度:
\n);
scanf(%f,&f);
'.
..
c=5*(f-32)/9;
printf(%.2f\n,c);
return0;
}
程序运行情况如下:
请输入一个华氏温度:
36↙
2.22
6.输入一个三位整数,要求输出它的百位数、十位数和个位数。
解:
#include
intmain()
{
intnum;/*num表示一个三位整数*/
inta,b,c;/*a,b,c分别表示百位、十位和个位上的数字*/
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_x0010_0;
jiao=temp/10;
fen=temp_x0010_;
printf(元的数量:
%d\n,yuan);
printf(角的数量:
%d\n,jiao);
printf(分的数量:
%d\n,fen);
return0;
}
程序运行结果如下:
6元的数量:
13角的数量:
18
分的数量:
1printfscanf函数输入数据,4.设圆柱的半径为2.5,圆柱的高为,求圆柱的体积。
用8函数输出计算结果,输出时要求有文字说明,取两位小数。
解:
#include
#definePI3.1415926
intmain()
{
floatr,h,v;
printf(Pleaseinputr,h:
);
scanf(%f,%f,&r,&h);
'.
..
v=PI*r*r*h;
牰湩晴尨半径为:
%.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));
牰湩晴尨面积为:
%.2f\n,area);
}
else
牰湩晴尨边长分别为%d、%d、%d的三边构不成三角形!
\n,a,b,c);
return0;
}
程序运行情况如下:
↙3,4,65.33
面积为:
'.
..
3,6,12↙
边长分别为3、6、12的三边构不成三角形!
10.设计一个C语言程序,求5个数中的最大数和最小数。
解:
#include
intmain()
{
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; } 程序运行情况如下: 92568↙max: 9,min: 211.判断输入的字符属于哪一类字符: 大写字母、小写字母、数字还是其他字符。 解: #include intmain() { charch; '. .. scanf(%c,&ch); if(ch>=48&&ch<=57) 牰湩晴尨该字符为数字! ); elseif(ch>=65&&ch<=91) 牰湩晴尨该字符为大写字母! ); elseif(ch>=97&&ch<=122) 牰湩晴尨该字符为小写字母! ); else 牰湩晴尨该字符为其他字符! ); return0; } 程序运行情况如下: ↙2该字符为数字! switch语句分别编写程序,实现以下功能: if12.用语句和。 输入其他字符时GoodExcellent,,Pass,Fail42从键盘输入数字1,,3,,分别显示显示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 13.假设国家对个人收入所得税是按这样的标准进行的: 起征点是2000元,2000~3000元为5%,3000~5000元为15%,5000~10000元为20%,10000元以上为30%。 编程输入'. .. 工资,计算实际工资所得及税金。 解: #include intmain() { intgz; floatsj; scanf(%d,&gz); if(gz<2000) { 牰湩晴尨不需要纳税! \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; 牰湩晴尨工资为: %d,税金为: %.2f\n,gz,sj); return0; } 程序运行情况如下: ↙1500不需要纳税! ↙2800: 140.00工资为: 2800,税金为4500↙'. .. 工资为: 4500,税金为: 675.00 8500↙ 工资为: 8500,税金为: 1700.00 20000↙ 工资为: 20000,税金为: 6000.00 2+bx+c=0的根。 .求方程ax14-4ac>0时,有两个不等的实根;当b-4ac=0时,有两个相等的实根;当22b说明: 当b-4ac<0时,有两个虚根。 2解: #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) { 牰湩晴尨该方程有两个相等的实根! ); 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 \n); 该方程无实根! 牰湩晴尨 } 程序运行情况如下: ↙345该方程无实根! ↙462-0.50,-1.00 ↙441-0.50,-0.50该方程有两个相等的实根! 7整除的数。 1~100中找出能被5或15.从解: #include intmain() { inti; for(i=1;i<=100;i++) { if(i%5==0||i%7==0) printf(],i); } return0; } 程序运行结果如下: 494050 4542353055710141520212528 807775706563605655100 989591908584 sum=1+11+111+1111+11111.计算16。 解: #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; } 程序运行结果如下: 1 11 111 1111 11111 12345 17.输入两个正整数m和n,求出它们的最大公约数和最小公倍数。 解: #include intmain() { 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; } 程序运行情况如下: 5↙125 : 75 最小公倍数为25和15的最大公约数为: 5,.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 18解: #include intmain() { charch; intm=0; intk=0; intn=0; intt=0; ch=getchar(); while(ch! ='\n') { if(ch==32) k++; elseif(ch>=48&&ch<=57) n++; '. .. elseif(ch>=65&&ch<=90||ch>=97&&ch<=122) m++; else t++; ch=getchar(); } 牰湩晴尨字母的个数为: %d\n,m); 牰湩晴尨空格的个数为: %d\n,k); 牰湩晴尨数字的个数为: %d\n,n); 牰湩晴尨其他字符的个数为: %d\n,t); return0; } 程序运行情况如下: 123abcdefghyyyy;;;;;…11166@#%↙ 字母的个数为: 12 空格的个数为: 2 数字的个数为: 8 其他字符的个数为: 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; } 程序运行结果如下: 4 10 22 46 94 '. .. 190 382 766 1534 21.打印出所有的“水仙花数”。 所谓“水仙花数”是指一个三位数,其各位数字立方333 +3153=1+5和等于该数本身。 例如,153就是一个水仙花数,因为解: #include intmain() { inti,bw,sw,gw; 牰湩晴尨水仙花数是: ); 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(],i); } printf(\ ); return0; } 程序运行结果如下: 407 371水仙花数是: 153370 -622.用泰勒级数求e的近似值,直到最后一项小于10为止。 +1/n! +…e=1+1/1! +1/2! +1/3! 解: #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) { n1=n2_x0010_; n2=n2/10; printf(%d-,n1); '. .. } printf(\ ); return0; } 程序运行情况如下: 8↙1298-9-2-1- 20项之和。 ,21/13…求出这个数列的前,,3/25/3,8/5,13/824.有一个分数序列2/1解: #include main()int { 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; } %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(\ ); } for(i=3;i>=1;i--) { for(j=1;j<20-i;j++) printf(); for(j=1;j<=2*i-1;j++) { printf(*); } printf(\ ); '. .. } return0; } 26.百马百担问题: 有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问用大马、中马、小马各多少匹? 请设计解决该问题的C语言程序。 解: #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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题