q=funq(m,n);
printf(\ } }
int funp(int m,int n) {
int i;
if(m>n){i=m;m=n;n=i;}
for(i=m;i>0;i--)if(m%i==0&&n%i==0)return(i); }
int funq(int m,int n) {
int i;
if(m for(i=m;i<=m*n;i+=m)if(i%n==0)return(i); } 12.编写一个函数,由参数传入一个字符串,统计此字串中字母、数字和其他字符的个数,在主函数中输入字符串并显示统计结果。 未制作函数,主要利用了选择语句结构: #include\main() { int i,c,zm=0,sz=0,kg=0,qt=0; printf(\ while((c=getchar())!='\\n') if(c==' ')kg++; else if(c>47&&c<58)sz++; else if(c>='A'&&c<='Z'||c>='a'&&c<='z')zm++; else qt++; printf(\} 制作函数,利用函数调用: #include\int analys(char ch); main( ) { int i,zm=0,sz=0,qt=0,c; printf(\ while((c=getchar())!='\\n') { i=analys(c); switch(i) { case 1: zm++; break; case 2: sz++; break; case 3: qt++; } } printf(\} int analys(char ch) { if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')return 1; if(ch>47&&ch<58)return 2; return 3; } 13.按照第5章第8题的要求编写判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数,找出n以内所有的水仙花数。 【输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,153=1*1*1+5*5*5+3*3*3】 main() { int x,i,f; printf(\ scanf(\ for(i=0;i<=x;i++) { f=0; f=fun(i); if(f==1)printf(\ } getch(); } int fun(int x) { int a,b,c; a=x/100; b=x/10; c=x; if(a*a*a+b*b*b+c*c*c==x)return 1; else return 0; } 14.定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。 #define f(a,b) (a=a+b,b=a-b,a=a-b) main() { int x,y; printf(\ scanf(\ printf(\ f(x,y); printf(\ getch(); } 15.已知二阶Fibonacci数列: 0 若n=0 Fib(n)= 1 若n=1 Fib(n-1)+Fib(n-2) 其它情况 定义递归函数求Fib(n)。 main() { int i,n; printf(\ scanf(\ for(i=0;i<=n;i++) printf(\ getch(); } int fib(int n) { if(n==0)return 0; else if(n==1)return 1; else return (fib(n-1)+fib(n-2)); } 16.定义函数求F=(n+m)!+n!,m、n均为任意正整数。要求使用递归调用。 long int f(int x); main() { int i,m,n; long int sum; printf(\ scanf(\ sum=f(n+m)+f(n); printf(\ getch(); } long int f(int x) { int i,j; if(x==0||x==1)return 1; else return(x*f(x-1)); } 17.定义一个函数完成第5章第11题的功能。 【输出九九乘法表。】 main() { fun(); getch(); } fun() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf(\ printf(\ } } 18.如果有两个数,每一个数的所有约数(除了它本身以外)的和正好等于对方,则称这两个数为互满数,求出30000以内所有的互满数,并显示输出,求一个数它的所有约数(除了它本身以处)的和,用函数实现。 main() { int x,y; for(x=1;x<30000;x++) { for(y=1;y { if(facsum(x)==y&&facsum(y)==x){printf(\ } } getch(); } facsum(int n) { int i,sum=0; for(i=1;i { if(n%i==0)sum+=i; } return sum; } 19.设计程序完成下列计算。 已经:y=f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3)) 其中:f(x,n)=1-x2/2!+x4/4-...+(-1)n·x2n/(2n)! (n≥0) 当: x=5.6, n=7时,求:y 要求通过嵌套调用完成计算。 #include { float x=5.6,y; int n=7,i; y=1+f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3)); printf(\} float f(float x,int n) { float sum=0.0; int i; for(i=1;i<=n;i++) { sum+=f1(-1,i)*f1(x,2*i)/f2(2*i); } return sum; } float f1(float x,int m) { int i; float y=1.0; for (i=1;i<=m;i++) { y*=x; }