C语言课后习题答案.docx
《C语言课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言课后习题答案.docx(15页珍藏版)》请在冰点文库上搜索。
C语言课后习题答案
第4章后练习
10.ch4_lx10.c
#include
voidmain()
{
intm=1,n=1,s=0,k=1;
while(n<=10)
{
while(m<=n)
{printf("%d",m);
m++;
}
printf("\n");
n++;
m=1;
}
}
Ch4_lx12.c输入一行字符串,统计有多少字母.
#include
voidmain()
{
intm=0;
charch;
while((ch=getchar())!
='\n')
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
m++;
printf("%d\n",m);
}
}
Ch4_lx13.c猜字游戏
#include
#include
#include
#include
voidmain()
{intmagic;
intguess;
srand((unsigned)time(NULL));
magic=rand();
printf("Enteryourguess:
");
scanf("%d",&guess);
while(guess!
=magic)
{
if(guess>magic)
printf("**Toohigh\n**");
else
printf("**TooLow\n**");
printf("Enteryourguess:
");
scanf("%d",&guess);
if(guess==magic)
{printf("**Right**\n");
break;}
}
}
11.输入一自然数,输出它的因子。
解1.
#include
intmain()
{intw,i=2;
printf("请输入一个整数w:
\n");
scanf("%d",&w);
printf("%d的因子是:
",w);
while(w)
{while(w)
{
if(w%i==0)
{printf("%d",i);
w=w/i;
}
else
break;
}
i++;
}
return0;
}
Ch5_lx14.c求1*3*5*7…*n
#include
intmain()
{
inti,x,s=1;
printf("请输入一个奇数:
\n");
scanf("%d",&x);
for(i=1;i<=x;i+=2)
s=s*i;
printf("1*3*...*%d=%d\n",x,s);
return0;
}
设计一个猜字游戏.
程序给出一个数,游戏者猜对了,屏幕显示
“**Right**”;
当猜的数错了,显示”**Wrong**”,并告之猜的
数太小并显示”**TooLow**”,否则就显示”
**TooHigh**”.
例:
猜字游戏
(一)
main()
{intmagic=123;
intguess;
printf(“Enteryourguess:
”;
scanf(“%d”,&guess);
if(guess==magic)
printf(“**Right**”);
else
{printf(“**Wrong**”);
if(guess>magic)
printf(“**Toohigh\n**”);
else
printf(“**Toolow**\n”);}
}
main()猜字游戏
(二)
{intmagic=123;
intguess;
printf("Enteryourguess:
");
scanf("%d",&guess);
while(guess!
=magic)
{if(guess==magic)
printf("**Right**\n");
else
{printf("**Wrong**\n");
if(guess>magic)
printf("**Toohigh\n**");
else
printf("**TooLow\n**");}
printf("Enteryourguess:
");
scanf("%d",&guess);}}
例:
一球从100米高度自由落下,每次落地后都弹回原高度一半落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
main()
{floatsn=100,hn=sn/2;
intn;
for(n=2;n<=10;n++)
{sn=sn+2*hn;
hn=hn/2;}
printf(“%fm.\n”,sn);
printf(“%fm.\n”,hn);}
例:
猴子吃桃子问题.
猴子第一天摘下若干桃子,当即吃了一半,又多吃了一个.第二天早上又将剩余的桃子吃掉一半,还是又多吃了一个.
以后每天早上都吃了前天剩下的一半多一个.到第十天
早上想再吃时,只见剩下了一个桃子了.
求第一天共摘了多少桃子?
main()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;day--;
}
printf(“total=%d\n”,x1);
}
12.#include
voidmain()
{
intm=0;
charch;
while((ch=getchar())!
='\n')
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
m++;
printf("%d\n",m);
}
}
第5章后练习
把100~200之间的不能被3整除的数输出。
main()
{intn;
for(n=100;n<=200;n++)
{if(n%3==0)
continue;printf(“%5d”,n);
}
}
例:
问程序输出的结果?
main()
{inti=1,a=0;
for(;i<=5;i++)
{
do{
i++;
a++;
}while(i<3);
i++;}
printf(“a=%d,i=%d\n”,a,i);
}
输出:
a=3,i=8
例:
找出所有的三位数,它和它的各位数字的立方和正好相
等.例如:
153=13+53+33.
设所求的三位数,其百位数字是i,十位数字是j,个位数字
是k.显然应满足如下表达式:
i*i*i+j*j*j+k*k*k=100*i+10*j+k
main()
{inti,j,k;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)
printf(“%d%d%d\n”,i,j,k);
}
第6章后练习
示例:
输入2个数,如果它们的值不相等,则交换并输出它们的值;否则,输出“equal”。
交换a和b值的方法:
temp=a;
a=b;
b=temp;
#include
voidmain()
{inta,b,temp;
printf("inputa,b:
");
scanf("%d%d",&a,&b);
if(a!
=b){
temp=a;
a=b;
b=temp;
printf("a=%d,b=%d\n",a,b);}
else
printf("equal\n");
}
示例:
输入3个整数,输出其中的最大值
#include
voidmain()
{
inta,b,c,max;
printf("inputa,b,c:
");
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max
if(maxprintf("maxis%d\n",max);
}
例:
输入x,计算下列分段函数f(x).
1/xx≠0
f(x)=
0x=0
#include
voidmain()
{
floatx,y;
printf("inputx:
\n");
scanf("%f",&x);
if(x!
=0)y=1/x;
elsey=0;
printf("f(%f)=%.2f\n",x,y);
}
例:
输入x,计算下列分段函数f(x).
x+1x<1
f(x)=x+21≤x<2
x+3x≥2
#include
voidmain()
{doublex,y;
printf("请输入x:
");
scanf("%lf",&x);
if(x<1)
y=x+1;
elseif(x<2)
y=x+2;
else
y=x+3;
printf("f(%.2f)=%.2f\n",x,y);
}
7.将大写字符转换为小写.
#include
voidmain()
{charch;
while((ch=getchar())!
='\n')
{if(ch>='A'&&ch<='Z'){
ch+=32;
printf("%c",ch);}
else
printf("%c",ch);}
printf("\n");
}
8.统计字符
#include
#include
intmain()
{charch;
intx=0,y=0,z=0,a=0,b=0;
printf("请输入:
\n");
while((ch=getchar())!
='\n')
{if(ch>='a'&&ch<='z')
x++;
elseif(ch>='A'&&ch<='Z')
y++;
elseif(ch>='0'&&ch<='9')
z++;
elseif(ch==''||ch=='\n')
a++;
else
b++;
}
printf("小写字母%d个\n",x);
printf("大写字母%d个\n",y);
printf("数字字符%d个\n",z);
printf("空格字符%d个\n",a);
printf("其它字符%d个\n",b);
return0;
}
9.计算分段函数
#include
voidmain()
{floatx,y;
printf("请输入x:
\n");
scanf("%f",&x);
if(x<=1)
y=x+5;
elseif(x>1&&x<=10)
y=2*x;
else
y=(3/(x-10);
printf("x=%fy=%f\n",x,y);
}
10.五分制与百分制的转换
#include
voidmain()
{intx,i;
printf("该程序功能为五分制与百分制的转换!
\n");
printf("1进入,2退出!
\n");
scanf("%d",&i);
while(i==1)
{printf("请输入:
\n");
scanf("%d",&x);
if(x>=90&&x<=100)
x=5;
elseif(x>=80&&x<90)
x=4;
elseif(x>=70&&x<80)
x=3;
elseif(x>=60&&x<70)
x=2;
else
x=1;
printf("五分制成绩为%d分\n",x);
printf(“1继续2退出!
\n");
scanf("%d",&i);
}
}
第7章后练习
1.百分制转换成五分制.
#include
intmain()
{
intx;
printf("请输入学生百分制成绩:
\n输入负数结束程序:
\n");
scanf("%d",&x);
while(x>0)
{switch(x/10)
{
case10:
case9:
printf("五分制为:
\n5\n\n");break;case8:
printf("五分制为:
\n4\n\n");break;
case7:
printf("五分制为:
\n3\n\n");break;
case6:
printf("五分制为:
\n2\n\n");break;
default:
printf("五分制为:
\n1\n\n");break;
}
printf("请输入学生百分制成绩:
\n输入负数结束程序:
\n");
scanf("%d",&x);
}
printf("谢谢使用,再见:
\n");
return0;
}
2.计算sin(),cos(),tan().
#include
#include
intmain()
{
doublex,s;
inty;
printf("Inputanumber:
\n");
scanf("%lf",&x);
while
(1){
printf("您希望进行哪种运算?
\n");
printf("1.计算sin(x)\n");
printf("2.计算cos(x)\n");
printf("3.计算tan(x)\n");
scanf("%d",&y);
switch(y)
{case1:
s=sin(x);
printf("sin(%f)=%f\n",x,s);break;
case2:
s=cos(x);
printf("cos(%f)=%f\n",x,s);break;
case3:
s=tan(x);
printf("tan(%f)=%f\n",x,s);break;
default:
printf(“输入有误,请输入1-3之间的数字!
\n");
}
If(y==1||y==2||y==3)
break;
}
printf("谢谢使用:
\n");
return0;
}