7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
hcf(u,v)
int u,v;
{ int a,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)
int u,v,h;
{ int u,v,h,l;
scanf(\"%d,%d\
h=hcf(u,v);
printf(\"H.C.F=%dn\
l=lcd(u,v,h);
printf(\"L.C.d=%dn\
return(u*v/h);
}
#include void main() { int u,v,h,l; scanf(\"%d,%d\ h=hcf(u,v); printf(\"H.C.F=%dn\ l=lcd(u,v,h); printf(\"L.C.D=%dn\ } 7.2 求方程根 float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } equal_to_zero(a,b) float a,b; { x1=x2=(-b)/(2*a);} smaller_than_zero(a,b) float a,b; { p=-b/(2*a); q=sqrt(disc)/(2*a); } main() { float a,b,c; printf(\"n输入方程的系数a,b,c:n\"); scanf(\"%f,%f,%f\ printf(\"n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n\ disc=b*b-4*a*c; printf(\"方程的解是:n\"); if(disc>0) { great_than_zero(a,b); printf(\"X1=%5.2ftX2=%5.2fnn\ } else if(disc==0) { zero(a,b); printf(\"X1=%5.2ftX2=%5.2fnn\ } else { small_than_zero(a,b,c); printf(\"X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin\ } } 7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。 #include #include void main() { int number; scanf(\"%d\ if(prime(number)) printf(\"yes\"); else printf(\"no\"); } int prime(number) int number; { int flag=1,n; for(n=2;n flag=0; return(flag); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 #define N 3 int array[N][N]; convert(array) int array[3][3]; { int i,j,t; for(i=0;i array[i][j]=array[j][i]; array[j][i]=t; } } main() { int i,j; printf(\"输入数组元素:n\"); for(i=0;i printf(\"n数组是:n\"); for(i=0;i printf(\"n\"); } convert(array); printf(\"转置数组是:n\"); for(i=0;i printf(\"n\"); } } 7.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 #include #include void main() { char str[100]; printf(\"输入字符串:n\"); scanf(\"%s\ inverse(str); printf(\"转换后的字符串是: %sn\ } inverse(str) char str[]; { char t; int i,j; for(i=0,j=strlen(str);i<(strlen(str)/2;i++,j--) { t=str[i]; str[i]=str[i-1]; str[i-1]=t; } } 7.6 写出一个函数,将两个字符串连接。 char concatenate(string1,string2,string); char string1[],string2[],string[]; { int i,j; for(i=0;string1[i]!='';i++) string[i]=string1[i]; for(j=0;string2[j]!='';j++) string[i+j]=string2[j]; string[i+j]=''; } #include void main() { char s1[100],s2[100],s[100]; printf(\"n输入字符串1:n\"); scanf(\"%s\ printf(\"输入字符串2:n\"); scanf(\"%s\ concatenate(s1,s2,s); printf(\"连接后的字符串:%sn\ } 7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但是两个数字间空一个空格。 #include void main() { char str[80]; printf(\"请输入含有四个数字的字符串:n\"); scanf(\"%s\ insert(str); } insert(str) char str[]; { int i; for(i=strlen(str);i>0;i--) { str[2*i]=str[i]; str[2*i-1]=' '; } printf(\"n 结果是:n %s\ } 7.9 编写一个函数,由实参传来一个字符串字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 #include int alph,digit,space,others; void main() { char text[80]; gets(text); alph=0,digit=0,space=0,others=0; count(text); printf(\"nalph=%d,digit=%d,space=%d,others=%dn\ } count(str) char str[]; { int i; for(i=0;str[i]!='';i++) if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) alph++; else if(str[i]>='0'&&str[i]<='9') digit++; else if(strcmp(str[i],' ')==0) space++; else others++; } 因篇幅问题不能全部显示,请点此查看更多更全内容