c编程习题答案.docx
《c编程习题答案.docx》由会员分享,可在线阅读,更多相关《c编程习题答案.docx(35页珍藏版)》请在冰豆网上搜索。
c编程习题答案
第3章习题答案
四、编程题i<100
1.
#include
main()
{
floatc,f;
printf("inputf=\n");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("%5.2f\n",c);
}
2.
#include
main()
{
intx,y;
scanf("%d",&x);
if(x<0)
y=x;
else
if(x>=10)
y=3*x-11;
else
y=2*x-1;
printf("\nx=%d,y=%d\n",x,y);
}
3.
#include
main()
{
chargrade;
grade=getchar();
switch(grade)
{case'A':
printf(">=90");break;
case'B':
printf("80~89");break;
case'C':
printf("70~79");break;
case'D':
printf("60~69");break;
case'E':
printf("0~59");
}
}
4.
#include
voidmain()
{
intp,r,n,m,temp;
scanf("%d,%d",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{r=n%m;
n=m;
m=r;
}
printf("%d,%d",n,p/n);
}
5.
#include
voidmain()
{intn,a,b,c;
for(n=100;n<=999;n++){
a=n/100;
b=(n-a*100)/10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)
printf("%d,",n);
}
}
6.
#include
main()
{
inta,b,c,d,t;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\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("%d,%d,%d,%d",a,b,c,d);
}
7.
#include
#include
main()
{
floate=1.0,t=1,n=1;
while(fabs(1/t)>1e-6)
{
e=e+1/t;
n=n+1;
t=t*n;
}
printf("e=%f\n",e);
}
8.
main()
{
inti,j;
for(i=3;i<=0;i--){
printf("*");
for(j=0;j<=2*i;j++)
printf("");
printf("*");
printf("\n");
}
9.
#include
main()
{inti,a,b,c,n=0;
for(i=100;i<=999;i++){
a=i%100;
c=i%10;
b=i-a*100-c;
if(i%11==0&&(a==b||b==c||c==a))
{printf("%d",i);n+=1;
}}
}
10.
#include
main(){
intd=0,a=2;
floatm,s=0;
do{
a=2*a;
m=0.8*a;
s=s+m;
d++;
}while(a<=100);
printf("%f\n",s/d);
}
第4章习题答案
五、编程题答案
1.
#include"stdio.h"
#defineN10
main()
{floatscore[N],scoresum=0,averscore;
inti,belownum=0;
for(i=0;i{scanf(“%f”,&score[i]);
scoresum=scoresum+score[i];
}
averscore=scoresum/N;
printf("Theaveragescoreis%f",averscore);
for(i=0;iif(score[i]printf("Thereare%dstudentsbelowaveragescore.\n",belownum);
}
2.
#include"stdio.h"
main()
{intn1[10]={1,2,5,7,9,11,13,14,15,17},
n2[10]={0,3,4,6,8,10,12,15,16,20},
n3[20],i,j,t;
printf("Thearrayn1is:
\n");
for(i=0;i<10;i++)
printf("%d\t",n1[i]);
printf("\nThearrayn2is:
\n");
for(i=0;i<10;i++)
printf("%d\t",n2[i]);
i=0;j=0;t=0;
while(i<10&&j<10)
{if(n1[i]while(i<10)
{n3[t++]=n1[i++];}
while(j<10)
{n3[t++]=n2[j++];}
printf("\nThenthen3arrayis:
\n");
for(i=0;i<20;i++)
printf("%d\t",n3[i]);
}
3.
#include"stdio.h"
main()
{intn20[20],i,sum,n;
floataver[5];
for(i=0;i<20;i++)n20[i]=2*i+2;
for(n=0;n<4;n++)
{sum=0;
for(i=n*5;i<5+n*5;i++)
sum=sum+n20[i];
aver[n]=sum/5;
}
printf("\nThen20arrayis:
\n");
for(i=0;i<20;i++)
printf("%d\t",n20[i]);
printf("\nTheaverarrayis:
\n");
for(n=0;n<4;n++)
printf("%f\t",aver[n]);
}
4.
#include"stdio.h"
main()
{chara[30],b[30];
intla,lb;
printf("inputstringa:
");
gets(a);
printf("stringais%s\n",a);
printf("inputstringb:
");
gets(b);
printf("stringbis%s\n",b);
la=0;lb=0;
while(a[la]!
='\0')la++;
while(b[lb]!
='\0')lb++;
printf("\nla=%d\nlb=%d\n",la,lb);
lb=0;
while(b[lb]!
='\0'&&lb<5)a[la++]=b[lb++];
printf("\nthenstringais%s\n",a);
}
5.
#include"stdio.h"
main()
{charstr[50];
inti=0,up=0,down=0;
printf("inputastring:
");
gets(str);
printf("thestringis:
%s\n",str);
while(str[i]!
='\0')
{if(str[i]>=’A’&&str[i]<=’Z’)up++;
if(str[i]>=’a’&&str[i]<=’z’)down++;
i++;
}
printf("Capletter'numberis%d\nLowletter'numberis%d",up,down);
}
6.
#include"stdio.h"
main()
{charstr1[30],str2[30],test[30];
intl1,l2,i,t,pos=-1;
printf("inputstr1:
");
gets(str1);
printf("inputstr2:
");
gets(str2);
printf("\nstr1is:
%s\nstr2is:
%s",str1,str2);
l1=strlen(str1);l2=strlen(str2);
printf("\nl1is:
%d\nl2is:
%d\n",l1,l2);
for(t=0;t<=(l1-l2);t++)
{for(i=0;itest[i]=str1[i+t];
if(strcmp(test,str2)==0)
pos=t;
}
if(pos==-1||pos==l1)printf("Notfound\n");
elseprintf("Foundat%d\n",pos);
}
7.
#include"stdio.h"
main()
{inta[5][5]={{2,6,2,1,6},{0,5,0,1,8},{7,4,9,1,2},{9,4,2,6,5},{5,8,2,1,8}};
inti,j,sum;
printf("The5*5arrayis:
\n");
for(i=0;i<5;i++)
{for(j=0;j<5;j++)printf("%d",a[i][j]);
printf("\n");
}
sum=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i==0||i==4||j==0||j==4)sum+=a[i][j];
printf("\nThesumis:
%d",sum);
}
8.
#include"stdio.h"
main()
{inta[20][20];
inti,j;
for(i=0;i<20;i++)
for(j=0;j<20;j++)
{if(i==0||i==19||j==0||j==19||i==j||(i+j)==19)a[i][j]=1;
elsea[i][j]=0;
}
printf("Thearrayis:
\n");
for(i=0;i<20;i++)
{for(j=0;j<20;j++)printf("%d",a[i][j]);
printf("\n");
}
}
9.
#include"stdio.h"
main()
{
inta[4][5]={{8,5,1,6,9},{8,5,5,4,3},{2,5,1,6,9},{1,7,1,9,0}},i,j,sum=0;
floataver;
printf("Thearrayis:
\n");
for(i=0;i<4;i++)
{for(j=0;j<5;j++){printf("%d",a[i][j]);sum+=a[i][j];}
printf("\n");
}
aver=sum/(4*5);
printf("Theaverageofthearrayis:
%f\nThenumberbelowisaboveaverage:
\n",aver);
for(i=0;i<4;i++)
for(j=0;j<5;j++)
if(a[i][j]>aver)printf("%d",a[i][j]);
}
10.
#include"Stdio.h"
main()
{charch[5]="****\n",blank='';
inti,num;
for(i=0;i<5;i++)
{for(num=0;num
printf("%s",ch);
}
}
第5章习题答案
五、编程题
1.#include
intmax(intx,inty,intz)
{intt;
if(x>y)
t=x;
elset=y;
if(telsereturnt;
}
main()
{inta,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("themaxis:
%d\n",max(a,b,c));
}
2.
#include
doubletri_area(floata,floatb,floatc)/*求三角形的面积*/
{
doubles;
s=(a+b+c)/2;
return(sqrt(s*(s-a)*(s-b)*(s-c)));
}
main()
{
floata,b,c,area;
printf("pleaseinputthesidesofatriangle:
");
scanf("%f%f%f",&a,&b,&c);
area=tri_area(a,b,c);
printf("theareais:
%6.2f",area);
}
3.
#include
#include
ascll_max()
{inti;
charmax,a[10]={0};
for(i=0;i<10;i++)scanf("%c",&a[i]);
for(i=0;i<10;i++)if(a[i]>max)max=a[i];
printf("%c",max);
}
main()
{ascll_max();
}
4.
#include
#include
#include
floatf()
{ints=1;
floati,n=1,d=0,m;
scanf("%f",&n);
for(i=1;ireturnd;
}
main()
{floats;
s=f();
printf(“%f\n”,s);
}
5.#include
#include
intrunnian(intb)
{intc;
if(b%100!
=0&&b%4==0||b%100==0&&b%400!
=0)c=1;
elsec=0;
return(c);
}
main()
{inta,is_not=10;
scanf("%d",&a);
is_not=runnian(a);
printf("%d",is_not);
}
6.
#include"stdio.h"
main()
{charc1,c2,c3,c4;
printf("Input4characters:
");
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
s(4,c1,c2,c3,c4);
}
s(n,a,b,c,d)
intn;
chara,b,c,d;
{
switch(n)
{
case4:
s(3,a,b,c,d);
s(3,b,a,c,d);
s(3,c,a,b,d);
s(3,d,a,b,c);
break;
case3:
s(2,a,b,c,d);
s(2,a,c,b,d);
s(2,a,d,b,c);
break;
case2:
s(1,a,b,c,d);
s(1,a,b,d,c);
break;
case1:
printf("%c%c%c%c\n",a,b,c,d);
}
}
7.#include
#include
voidconverse(charch[])
{inti=0;
gets(ch);
while(ch[i]!
='\0')
{if(ch[i]>='a'&&ch[i]<='z')ch[i]-=32;i++;}
}
main()
{charch[80];
converse(ch);
puts(ch);
}
8.#include
#include
ou_shu(inta,intb)
{inti;
if(a>=b)
printf("请输入a,b使a,b满足a
for(i=a+1;i
{if(i%2==0)
printf("%d\n",i);}
}
main()
{inta,b;
scanf("%d,%d",&a,&b);
ou_shu(a,b);
}
9.#include
#include
dm(intn,intm)
{intp,r,temp;
if(n{temp=n;n=m;m=temp;}
p=m*n;
while(m!
=0)/*求最大公约数*/
{r=n%m;n=m;m=r;
}
printf("H.C.F=%d\n",n);
printf("L.C.D=%d\n",p/n);
}
main()
{inta,b;
printf("inputtwointegers:
");
scanf("%d,%d",&n,&m);
dm(a,b);
}
10.
.#include
intf(intn)
{inti;
if(n==1)return1;
elseif(n==2)return1;
elseif(n>2)returnf(n-1)+2*f(n-2);
}
main()
{intn;
scanf(“%d”,&n);
printf("f(%d)=%d\n",n,f(n));
}
第6章习题答案
三、编写程序
1.#include
#defineS(x,y)intt;t=x;x=y;y=t;
main()
{
intx,y;
scanf("%d,%d",&x,&y);
S(x,y);
printf("x=%d,y=%d",x,y);
return;
}
2.if(LEAP_YEAR(year))printf("%disaleapyear",year);
elseprintf("%disnotleapyear",year);
#defineLEAP_YEAR(y)(year%4!
=0||year%100==0)&&year%400!
=0/*闰年的条件做字符串*/
#include
main()
{
intyear;
scanf("%d",&year);
if(LEAP_YEAR(year))printf("%disaleapyear",year);
elseprintf("%disnotleapyear",year);
}
第7章习题答案
五.编程题
1.
swap(int*pt1,int*pt2)
{
inttemp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int*q1,int*q2,int*q3)
{
if(*q1<*q2)swap(q1,q2);
if(*q1<*q3)swap(q1,q3);
if(*q2<*q3)swap(q2,q3);
}
main()
{
inta,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
exchange(p1,p2,p3);
printf("\n%d,%d,%d,\n",a,b,c);
}
2.
defineN10
voidsort(int*p,intn)
{
inti,j,k,temp;
for(i=0;i{
k=i;
for(j=i+1;jif(*(p+j)<*(p+k))k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
}
main()
{
inta[N],i;
printf("input%dint:
\n",N);
for(i=0;iscanf("%d",&a[i]);
sort(a,N);
printf("thesortedarray:
\n");
for(i=0;iprintf("%d",a[i]);
}
3.
#include
#include
voidmain(intargc,char*argv[])
{
charstr[100];
inti=0,max=0,min=0,num=0,nul=0,other=0;
gets(str);
for(i=0;str[i];i++)
{if(str[i]>=65&&str[i]<=90)max++;
elseif(str[i]>=97&&str[i]<=122)min++;
elseif(str