c程序设计课后习题答案详解.docx
《c程序设计课后习题答案详解.docx》由会员分享,可在线阅读,更多相关《c程序设计课后习题答案详解.docx(17页珍藏版)》请在冰豆网上搜索。
c程序设计课后习题答案详解
1、编写一个程序,输入abc三个值,输出其中最大者。
解:
#include
voidmain()
{inta,b,c,max;
printf("请输入三个数a,b,c:
\n");scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max
max=b;
if(maxmax=c;
printf("最大数为:
%d",max);
}
2、输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出要有文字说明,取两位小数.
解:
#include
voidmain()
{
floatc,f;
printf("请输入一个华氏温度:
\n");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("摄氏温度为:
%5.2f\n",c);
}
3、输入四个整数,按大小顺序输出.
#include
voidmain()
{intt,a,b,c,d;
printf("请输入四个数:
");
scanf("%d,%d,%d,",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
printf("\n排序结果如下:
\n");
printf("%d%d%d%d\n",a,b,c,d);
}
4、有三个整数a,b,c,由键盘输入,输出其中最大的数.
#include
voidmain()
{inta,b,c,termp,max;
printf("请输入A,B,C:
");
scanf("%d,%d,%d",&a,&b,&c);
printf("A=%d,B=%d,C=%d\n",a,b,c);
temp=(a>b)?
a:
b;
max=(temp>c)?
temp:
c;
printf("A,B,C中最大数是%d,",max);
}
5、输入两个数,求最小公倍数.
#include
voidmain()
{intm,n,i;
scanf("%d%d",&m,&n);
for(i=m*n;i>=1;i--)
{if((i%m==0)&&(i%n==0))break;}
printf("%d",i);
}
6.输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.
解:
#include
voidmain()
{
charc;
intletters=0,space=0,degit=0,other=0;
printf("请输入一行字符:
\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z'||c>'A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("其中:
字母数=%d空格数=%d数字数=%d其它字符数=%d\n",letters,space,
digit,other);
}
7、水仙开花
#include
voidmain()
{
inti,j,k,n;
printf("'水仙花'数是:
\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%d\n",n);}
}
8、判断整数是否为素数
#include
voidmain()
{intprime(int);
intnumber;
printf("请输入一个正整数:
\n");
scanf("%d",&number);
if(prime(number))
printf("\n%d是素数.",number);
else
printf("\n%d不是素数",number);
}
intprime(intnumber)
{
intflag=1,n;
for(n=2;nif(number%n==0)
flag=0;
return(flag);
9、}/*起泡法排序*/
#defineN10
charstr[N];
main()
{
inti,flag;
for(flag=1;flag==1;)
{
printf("\n输入字符串,长度为10:
\n");
scanf("%s",&str);
if(strlen(str)>N)
printf("超过长度,请重输!
");
else
flag=0;
}
sort(str);
printf("\n排序结果:
");
for(i=0;iprintf("%c",str[i]);
}
sort(str)
charstr[N];
{
inti,j;
chart;
for(j=1;jfor(i=0;(i='\0');i++)
if(str[i]>str[i+1])
{t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
10、/*判断输入年份是否为闰年*/
#defineLEAP_YEAR(y)(y%4==0)&&(y%100!
=0)||(y%400==0)
main()
{
intyear;
printf("\n请输入某一年:
");
scanf("%d",&year);
if(LEAP_YEAR(year))
printf("%d是闰年.\n",year);
else
printf("%d不是闰年.\n",year);
}
/*用函数方法,从三个数中找出最大值*/
main()
{
inta,b,c;
printf("请输入三个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
printf("三个之中最大值为:
%d\n",max(a,b,c));
}
max(x,y,z)
intx,y,z;
{
intt;
t=(x>y?
x:
y);
return(t>z?
t:
z);
}
11、输入四个整数,按大小顺序输出.
#include
Voidmain()
{intt,a,b,c,d;
printf("请输入四个数:
");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("\n排序结果如下:
\n");
printf("%d%d%d%d\n",a,b,c,d);
}
12、设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字.请编程.
解:
main()
{
floatpi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
printf("请输入圆半径r圆柱高h:
\n");
scanf("%f,%f",&r,&h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=4.0/3.0*pi*r*r*r;
vz=pi*r*r*h;
printf("圆周长为:
=%6.2f\n",l);
printf("圆面积为:
=%6.2f\n",s);
printf("圆球表面积为:
=%6.2f\n",sq);
printf("圆球体积为:
=%6.2f\n",vz);
13、用筛选法求100之内的素数.
/*用筛选法求100之内的素数*/
#include
#defineN101
main()
{inti,j,line,a[N];
for(i=2;ifor(i=2;ifor(j=i+1;j{if(a[i]!
=0&&a[j]!
=0)
if(a[j]%a[i]==0)
a[j]=0;
printf("\n");
for(i=2,line=0;i{if(a[i]!
=0)
{printf("%5d",a[i]);
line++;
if(line==10)
{printf("\n");
line=0;}
}
}
14、球反弹问题
main()
{
floatsn=100.0,hn=sn/2;
intn;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2;/*第n次反跳高度*/
}
printf("第10次落地时共经过%f米\n",sn);
printf("第10次反弹%f米.\n",hn);
}
15、冒泡
#include
voidmain()
{
inta[10];
inti,j,t;
printf("input10numbers:
\n");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<=9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("thesortednumbers:
\n");
for(i=0;i<=9;i++)
printf("%d",a[i]);
printf("\n");}
16、对角线
#include
voidmain()
{
floata[3][3],sum=0;
inti,j;
printf("请输入矩阵图\n");
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf("%f",&a[i][j]);
printf("\n");
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
if(i+j==2||i==j)
sum=su