C语言课后习题8.docx
《C语言课后习题8.docx》由会员分享,可在线阅读,更多相关《C语言课后习题8.docx(10页珍藏版)》请在冰点文库上搜索。
C语言课后习题8
8.1
hcf(u,v)
intu,v;
{inta,b,t,r;
if(u>v){t=u;u=v;v=t;}
a=u;b=v;
while((r=b%a)!
=0)
{b=a;a=r;}
return(a);
}
lcd(u,v,h)
intu,v,h;
{return(u*v/h);}
main()
{intu,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
}
8.2
#include"math.h"
floatx1,x2,disc,p,q;
greater_than_zero(a,b)
floata,b;
{x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
equal_to_zero(a,b)
flaota,b;
{x1=x2=-b/(2*a);}
smaller_than_zero(a,b)
floata,b;
{p=-b/(2*a);
q=sqrt(-disc)/(2*a);
}
main()
{floata,b,c;
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if(fabs(disc)<=1e-5)
{equal_to_zero(a,b);
printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);
}
elseif(disc>0)
{greater_than_zero(a,b);
printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);
}
else
{smaller_than_zero(a,b);
printf("x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",p,q,p,q);
}
}
8.3
main()
{intnumber;
scanf("%d",&number);
if(prime(number))
printf("yes");
else
printf("no");
}
intprime(number)
intnumber;
{intflag=1,n;
for(n=2;n if(number%n==0)
flag=0;
return(flag);
}
8.4
#defineN3
intarray[N][N];
convert(array)
intarray[3][3];
{inti,j,t;
for(i=0;i for(j=i+1;j {t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
main()
{inti,j;
for(i=0;i for(j=0;j scanf("%d",&array[i][j]);
convert(array);
for(i=0;i {printf("\n");
for(j=0;j printf("%5d",array[i][j]);
}
}
8.5
main()
{charstr[100];
scanf("%s",str);
inverse(str);
printf("%s\n",str);
}
inverse(str)
charstr[];
{chart;
inti,j;
for(i=0,j=strlen(str);i {t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
8.6
charconcate(str1,str2,str)
charstr1[],str2[],str[];
{inti,j;
for(i=0;str1[i]!
='\0';i++)
str[i]=str1[i];
for(j=0;str2[j]!
='\0';j++)
str[i+j]=str2[j];
str[i+j]='\0';
}
main()
{chars1[100],s2[100],s[100];
scanf("%s",s1);
scanf("%s",s2);
concate(s1,s2,s);
printf("\ns=%s",s);
}
8.7
main()
{charstr[80],c[80];
voidcpy();
gets(str);
cpy(str,c);
printf("\n%s\n",c);
}
voidcpy(s,c)
chars[],c[];
{inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||
s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')
{c[j]=s[i];j++;}
c[j]='\0';
}
8.8
main()
{charstr[80];
scanf("%s",str);
insert(str);
}
insert(str)
charstr[];
{inti;
for(i=strlen(str);i>0;i--)
{str[i*2]=str[i];
str[i*2-1]='';
}
printf("%s\n",str);
}
8.9
intalph,digit,space,others;
main()
{chartext[80];
gets(text);
alph=0,digit=0,space=0,others=0;
count(text);
printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,others);
}
count(str)
charstr[];
{inti;
for(i=0;str[i]!
='\0';i++)
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
alph++;
elseif(str[i]>='0'&&str[i]<='9')
digit++;
elseif(strcmp(str[i],'')==0)
space++;
else
others++;
}
8.11
#defineN10
charstr[N];
main()
{inti,flag;
for(flag=1;flag==1;)
{scanf("%s",str);
if(strlen(str)>N)
printf("inputerror");
else
flag=0;
}
sort(str);
for(i=0;i printf("%c",str[i]);
}
sort(str)
charstr[N];
{inti,j;
chart;
for(j=1;j for(i=0;(i='\0');i++)
if(str[i]>str[i+1])
{t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
8.13
main()
{intx,n;
floatp();
scanf("%d,%d",&n,&x);
printf("P%d(%d)=%10.2f\n",n,x,p(n,x));
}
floatp(tn,tx)
inttn,tx;
{if(tn==0)
return
(1);
elseif(tn==1)
return(tx);
else
return(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn);
}
8.14
#defineN10
#defineM5
floatscore[N][M];
floata_stu[N],a_cor[M];
main()
{inti,j,r,c;
floath;
floats_diff();
floathighest();
r=0;
c=1;
input_stu();
avr_stu();
avr_cor();
printf("\n number class 1 2 3 4 5 avr");
for(i=0;i {printf("\nNO%2d",i+1);
for(j=0;j printf("%8.2f",score[i][j]);
printf("%8.2f",a_stu[i]);
}
printf("\nclassavr");
for(j=0;j printf("%8.2f",a_cor[j]);
h=highest(&r,&c);
printf("\n\n%8.2f %d %d\n",h,r,c);
printf("\n %8.2f\n",s_diff());
}
input_stu()
{inti,j;
floatx;
for(i=0;i {for(j=0;j {scanf("%f",&x);
score[i][j]=x;
}
}
}
avr_stu()
{inti,j;
floats;
for(i=0;i {for(j=0,s=0;j s+=score[i][j];
a_stu[i]=s/5.0;
}
}
avr_cor()
{inti,j;
floats;
for(j=0;j {for(i=0,s=0;i s+=score[i][j];
a_cor[j]=s/(float)N;
}
}
floathighest(r,c)
int*r,*c;
{floathigh;
inti,j;
high=score[0][0];
for(i=0;i for(j=0;j if(score[i][j]>high)
{high=score[i][j];
*r=i+1;
*c=j+1;
}
return(high);
}
floats_diff()
{inti,j;
floatsumx=0.0,sumxn=0.0;
for(i=0;i {sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}
8.17
#include
voidconvert(n)
intn;
{inti;
if((i=n/10)!
=0)
convert(i);
putchar(n%10+'0');
}
main()
{intnumber;
scanf("%d",&number);
if(number<0)
{putchar('-');
number=-number;
}
convert(number);
}
8.18
main()
{intyear,month,day;
intdays;
scanf("\n%d,%d,%d",&year,&month,&day);
days=sum_day(month,day);
if(leap(year)&&(month>=3))
days+=1;
printf("days=%d\n",days);
}
staticintday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}
intsum_day(month,day)
intmonth,day;
{inti;
for(i=1;i day+=day_tab[i];
return(day);
}
intleap(year)
intyear;
{intleap;
leap=year%4==0&&year%100!
=0||year%400==0;
return(leap);
}