C语言程序设计习题3.docx

上传人:b****1 文档编号:568209 上传时间:2023-04-29 格式:DOCX 页数:25 大小:45.37KB
下载 相关 举报
C语言程序设计习题3.docx_第1页
第1页 / 共25页
C语言程序设计习题3.docx_第2页
第2页 / 共25页
C语言程序设计习题3.docx_第3页
第3页 / 共25页
C语言程序设计习题3.docx_第4页
第4页 / 共25页
C语言程序设计习题3.docx_第5页
第5页 / 共25页
C语言程序设计习题3.docx_第6页
第6页 / 共25页
C语言程序设计习题3.docx_第7页
第7页 / 共25页
C语言程序设计习题3.docx_第8页
第8页 / 共25页
C语言程序设计习题3.docx_第9页
第9页 / 共25页
C语言程序设计习题3.docx_第10页
第10页 / 共25页
C语言程序设计习题3.docx_第11页
第11页 / 共25页
C语言程序设计习题3.docx_第12页
第12页 / 共25页
C语言程序设计习题3.docx_第13页
第13页 / 共25页
C语言程序设计习题3.docx_第14页
第14页 / 共25页
C语言程序设计习题3.docx_第15页
第15页 / 共25页
C语言程序设计习题3.docx_第16页
第16页 / 共25页
C语言程序设计习题3.docx_第17页
第17页 / 共25页
C语言程序设计习题3.docx_第18页
第18页 / 共25页
C语言程序设计习题3.docx_第19页
第19页 / 共25页
C语言程序设计习题3.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计习题3.docx

《C语言程序设计习题3.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题3.docx(25页珍藏版)》请在冰点文库上搜索。

C语言程序设计习题3.docx

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。

公式为

要求要有文字说明,取两位小数。

解:

#include

intmain()

{

floatf,c;

printf("请输入一个华氏温度:

\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%100;

jiao=temp/10;

fen=temp%10;

printf("1元的数量:

%d\n",yuan);

printf("1角的数量:

%d\n",jiao);

printf("1分的数量:

%d\n",fen);

return0;

}

程序运行结果如下:

1元的数量:

6

1角的数量:

3

1分的数量:

8

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

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;

}

程序运行情况如下:

25689↙

max:

9,min:

2

11.判断输入的字符属于哪一类字符:

大写字母、小写字母、数字还是其他字符。

解:

#include

intmain()

{

charch;

scanf("%c",&ch);

if(ch>=48&&ch<=57)

printf("该字符为数字!

");

elseif(ch>=65&&ch<=91)

printf("该字符为大写字母!

");

elseif(ch>=97&&ch<=122)

printf("该字符为小写字母!

");

else

printf("该字符为其他字符!

");

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

13.假设国家对个人收入所得税是按这样的标准进行的:

起征点是2000元,2000~3000元为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;

}

程序运行情况如下:

1500↙

不需要纳税!

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");

}

程序运行情况如下:

345↙

该方程无实根!

462↙

-0.50,-1.00

441↙

该方程有两个相等的实根!

-0.50,-0.50

15.从1~100中找出能被5或7整除的数。

解:

#include

intmain()

{

inti;

for(i=1;i<=100;i++)

{

if(i%5==0||i%7==0)

printf("%5d",i);

}

return0;

}

程序运行结果如下:

5571014152021252830354042454950

555660636570757780848590919598100

16.计算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;

}

程序运行结果如下:

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;

}

程序运行情况如下:

2515↙

25和15的最大公约数为:

5,最小公倍数为:

75

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();

}

printf("字母的个数为:

%d\n",m);

printf("空格的个数为:

%d\n",k);

printf("数字的个数为:

%d\n",n);

printf("其他字符的个数为:

%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.打印出所有的“水仙花数”。

所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如,153就是一个水仙花数,因为153=13+53+33

解:

#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的近似值,直到最后一项小于10-6为止。

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)

{

n1=n2%10;

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;

}

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2