预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第页 1.输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。 #include<stdio.h> intmain() { inti,j,t; intmax(int,int); intmin(int,int); scanf("%d%d",&i,&j); if(i<j) {t=i;i=j;j=t;} printf("%d%d\n",max(i,j),min(i*j,max(i,j))); return0; } intmax(inti,intj) { intt; while(j) { t=i%j; i=j; j=t; } returni; } intmin(intp,intq) { returnp/q; } 2.输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。 #include<stdio.h> intmain() { intmax4(int,int,int,int);//对max4的函数声明 inta,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d);//输入4个数 printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者 return0; } intmax4(inta,intb,intc,intd)//定义max4函数 { intmax2(int,int);//对max2的函数声明 returnmax2(max2(max2(a,b),c),d);//调用max2把作为函数值带回main函数 } intmax2(inta,intb) { return(a>b?a:b);//返回条件表达式的值,即a和b中的大者 } 3.用递归调用的方法求5!。 #include<stdio.h> intmain() { intfac(int); intn; scanf("%d",&n); printf("%d!=%d\n",n,fac(n)); return0; } intfac(intn) { if(n==0||n==1) return1; else returnfac(n-1)*n; } 4.按以下递归公式求函数的值。 例如,当给n输入5时,函数值为18,(要求用递归实现)。 #include<stdio.h> intmain() { intfun(int); intn; scanf("%d",&n); printf("%d\n",fun(n)); return0; } intfun(intn) { if(n==1) return10; else returnfun(n-1)+2; } 5.用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。 #include<stdio.h> voidmain() {voidfun(int); intn; scanf("%d",&n); if(n<0) { n=-n; putchar('-'); } fun(n); puts(""); } voidfun(intm) { if(m/10) fun(m/10); putchar(m%10+48); } 6.写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。 #include<stdio.h> #defineN5 intmain() { voidfun(inta[]); inta[N],i; for(i=0;i<N;i++) scanf("%d",&a[i]); fun(a); return0; } voidfun(inta[N]) { intt,i; for(i=0;i<N/2;i++) { t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t; } for(i=0;i<N;i++) printf("%d",a[i]); puts(""); } 7.编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。 #include<stdio.h> #defineN5 #defineM10 intmain() { intscore_1[N],score_2[M]; inti,fun(inta[],int); for(i=0;i<5;i++) scanf("%d",&score_1[i]); for(i=0;i<10;i++) scanf("%d",&score_2[i]);