1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。
如:输入36和60,输出为:zdgys=12,zxgbs=180
#include
int main()
{
int i,j,t;
int max(int,int);
int min(int,int);
scanf("%d%d",&i,&j);
if(i {t=i;i=j;j=t;} printf("zdgys=%d,zxgbs=%d\n",max(i,j),min(i*j,max(i,j))); return 0; } int max(int i,int j) { int t; while(j) { t=i%j; i=j; j=t; } return i; } int min(int p,int q) { return p/q; } 又解: #include int main() { int i,j,t; int max(int,int); int min(int,int); scanf("%d%d",&i,&j); if(i {t=i;i=j;j=t;} printf("zdgys=%d,zxgbs=%d\n",max(i,j),min(i*j,max(i,j))); return 0; } int max(int i,int j) { int n; for(n=j;n>=2;n--) if ((i%n==0) && (j%n==0)) break; return n; } int min(int p,int q) { return p/q; } 2. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#include int max2(int a,int b) { return(a>b?a:b); } int max4(int a,int b,int c,int d) { return max2(max2(max2(a,b),c),d); } int main() { int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); printf("max=%d\n",max4(a,b,c,d)); return 0; } 3. 用递归调用的方法求n!。 如:输入为5,输出为5!=120。 #include int main() { int fac(int); int n; scanf("%d",&n); printf("%d!=%d\n",n,fac(n)); return 0; } int fac(int n) { int c; if ((n==0||n==1)) c=1; else c=fac(n-1)*n; return c; } 4. 按以下递归公式求函数的值。 ?? ?>+-==) 1(2 )1() 1(10 fun(n)n n fun n 例如,当给n 输入5时,输出为result is 18,(要求用递归实现,并且输入和输出都要在主函数中实现)。 #include int fun(int n) { int c; if(n==1) c=10; else c=fun(n-1)+2; return c; } 5. 用递归法将一个整数n 转换成字符串。(n 为不超过6为的整数)如输入为483,输出为:转换后的字符串为:483;如输入为-13579,输出为:转换后的字符串为:-13579。 注意:输入和输出都要在主函数中实现。 #include scanf("%d",&n); if (n<0) {n=-n; st[i++]='-';} fun(n); st[i]=0; printf("转换后的字符串为:%s\n",st); } void fun(int m) { if(m/10) fun(m/10); st[i++]=m%10+48; } 又解: #include void main() {void fun(int,char []); int n; char st[6]; scanf("%d",&n); fun(n,st); printf("转换后的字符串为:%s\n",st); } void fun(int m,char st[]) { static int i=0; if (m<0) {st[i++]='-';m=-m;} if(m/10) fun(m/10,st); st[i++]=m%10+48; st[i]='\0'; } 6. 写一个函数,完成将任意一个数组中的值按逆序重新存放。(数组长度不超过6位) 要求:数组内容的内容输入和重新存放后的输出都要在主函数中实现。 如:输入内容为5个整数,分别为8 6 5 4 1,重新存放后输出为:the result is 1,4,5,6,8。 #include #define N 6 void fun(int a[],int n) { int t,i; for(i=0;i { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } } int main() { int a[N],i,n; printf("input array length:"); scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); fun(a,n); printf("the result is :"); for(i=0;i printf("%d,",a[i]); return 0; } 7. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。 要求:输入和输出都要在主函数中实现。 如:输入第一个数组内容为:1 2 3 4 5,第二个数组内容为:2 4 6 8 10 12 14 16 18 20,输出分别为3和11。 #include float fun(int c[],int n) { float aver=0; for(int i=0;i aver+=c[i]; return aver/n; } int main() { int score_1[5],score_2[10],i; for(i=0;i<5;i++) scanf("%d",&score_1[i]); for(i=0;i<10;i++) scanf("%d",&score_2[i]); printf("average of score_1:%f\n",fun(score_1,5)); printf("average of score_2:%f\n",fun(score_2,10)); return 0; } 8. 编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。(两个个字符串长度之和不超过100) 如输入第一个字符串为I LOVE,第二个字符串为:my motherland,则输出为I LOVE my motherland。 #include int main() { void connect(char [],char []); char s1[100],s2[100]; gets(s1); gets(s2); connect(s1,s2); puts(s1); return 0; } void connect(char st1[],char st2[]) { int i=0,k=0; while(st1[++i]); while(st1[i++]=st2[k++]); //循环次数? } 又解: #include #include int main() { void connect(char [],char []); char s1[100],s2[100]; gets(s1); gets(s2); connect(s1,s2); puts(s1); return 0; } void connect(char st1[],char st2[]) { strcpy(st1+strlen(st1)-1,st2); } 9. 编写完成fun函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp 函数。 要求:输入和输出都要在主函数中实现。 如:根据输入不同输入内容,对应输出“两个字符串相等”、“第一个字符串大”、“第二个字符串大”。 #include #include int fun(char a[],char b[]) { int i; for(i=0;i if (a[i]>b[i]) return 0; else if (a[i] return 2; } int main() { char a[100],b[100],i; gets(a); gets(b); i=fun(a,b); switch(i) {case 0:printf("第一个字符串大\n");break; case 1:printf("第二个字符串大\n");break; default:printf("两个字符串相等\n"); return 0; } 10. 编写一个函数,实现在一个升序排列的整型数组{1,3,5,7,14,23,45,87,155,231};中插入任意一个整数的功能,保持整型数组仍然升序排列,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。 #include int a[11]={1,3,5,7,14,23,45,87,155,231}; int main() { int c,i; void fun(int a[],int c); printf("input an integer:"); scanf("%d",&c); fun(a,c); for(i=0;i<11;i++) printf("%d ",a[i]); printf("\n"); return 0; } void fun(int a[],int t) { int i,j; if(t>a[9]) a[10]=t; else { for(i=0;i<11;i++)