1.简单值传递参数函数编程 (3)编写函数,判断指定的字符是否是数字字符,如果是返回1,不是则返回0。 在主函数中输入该字符,调用函数判断该字符并输出是否是数字字符。 #include int number( char ch) int n f(dh>=0&&d<=9) else return (n); maino char ch; int n: printf( \nplease input a char: scanf(" %c", &ch); n=number(ch) f(n==1) printf( nIt is a number! printf( nIt is not a number! ) (4)编写一个函数,求1!+2!+…+n!。要求:n在主函数中输入,并在主函数中 输出计算结果。 #ⅰ include" stdio. h float fun(int n) Int I; float sum=0s=1: for(i=l; i<=n; i ++) sum=sum+S; return(sum) maino float sum
1.简单值传递参数函数编程 (3) 编写函数,判断指定的字符是否是数字字符,如果是返回 1,不是则返回 0。 在主函数中输入该字符,调用函数判断该字符并输出是否是数字字符。 #include int number(char ch) { int n; if(ch>='0'&&ch<='9') n=1; else n=0; return(n); } main() { char ch; int n; printf("\nPlease input a char:"); scanf("%c",&ch); n=number(ch); if(n==1) printf("\nIt is a number!"); else printf("\nIt is not a number!"); } (4) 编写一个函数,求 1!+2!+…+n!。要求:n 在主函数中输入,并在主函数中 输出计算结果。 #include “stdio.h” float fun(int n) { int i; float sum=0,s=1; for(i=1;i<=n;i++) { s=s*i; sum=sum+s; } return(sum); } main() { int n; float sum;
printf \iNput n: ) scanf(%d" &n) sum=fun(n) printf(、n1!+2|+3!+…+%d!=%f"n,sum); (5)编写一个函数,计算一个整数m的n次幂,在主函数中输入m和n,并在 主函数中输出计算结果。 double double result= 1 for(i=0; i<n; i++) result =result m: return(result); void maino int m, ni double result printf("\nPlease input m, n: printf( "nm="; scanf(" %d",&m) intf( "\nn="); scanf("%d", &n) result=power(m, n) printf("\nThe result is %lf", result) 3.函数递归调用 (3)编写递归函数,计算 Fibonacci数列第n项的值,n在主函数中由键盘输入, 结果在主函数中输出 Fib,+ Fib float fib (int n) float s, f(n==1n==2)s=1; else s=fib(n-1)+fib(n-2);
printf(“\nInput n:”); scanf(“%d”,&n); sum=fun(n); printf(“\n1!+2!+3!+…+%d!=%f”,n,sum); } (5) 编写一个函数,计算一个整数 m 的 n 次幂,在主函数中输入 m 和 n,并在 主函数中输出计算结果。 double power(int m,int n) { int i; double result=1; for(i=0;i<n;i++) { result=result*m; } return(result); } void main() { int m,n; double result; printf("\nPlease input m,n:"); printf("\nm="); scanf("%d",&m); printf("\nn="); scanf("%d",&n); result=power(m,n); printf("\nThe result is %lf",result); } 3.函数递归调用 (3) 编写递归函数,计算 Fibonacci 数列第 n 项的值,n 在主函数中由键盘输入, 结果在主函数中输出。 + = −1 −2 1 1 n n n Fib Fib Fib ( ) ( ) ( 3) 2 1 = = n n n float fib(int n) { float s; if(n==1||n==2) s=1; else s=fib(n-1)+fib(n-2);
return(s) maino float s printf( \nplease input n scanf( %d", &n) s=fib(n): printf( "nfib(%d)=%f ,n s) 2.编写函数,求和 1+21+2+3 1+2+……+n n在主函数中由键盘输入,被调函数返回sum的值 float fun (int n) int float sum=0s=0 for(i=1;i<=n; i++ S=s艹; sum=sum+1.0/s; return(sum) float sum; printf \nPlease input n scanf(%d"r &n) sum=fun (n) printf \nThe sum is %f"sum); 3 e=1+x++X,x20 20! #ⅰ ndude" math. h" float f2(int n)
return(s); } main() { int n; float s; printf("\nPlease input n:"); scanf("%d",&n); s=fib(n); printf("\nfib(%d)=%f",n,s); } 2. 编写函数,求和: n 在主函数中由键盘输入,被调函数返回 sum 的值。 float fun(int n) { int i; float sum=0,s=0; for(i=1;i<=n;i++) { s=s+i; sum=sum+1.0/s; } return(sum); } main() { int n; float sum; printf(“\nPlease input n:”); scanf(“%d”,&n); sum=fun(n); printf(“\nThe sum is %f”,sum); } 3. #include “math.h” float f2(int n) { n sum + + + + + + + + + = + 1 2 1 1 2 3 1 1 2 1 1 2! 3! 20! 1 2 3 20 x x x e x x = + + + +
float s=1. for(i=2;i<=n; i ++) return(s) float f1(int x, int n) int i. float s=x for(i=2;i<=n; i++) S=XTSI return(s mal n() float exp=1. 0: int x, n; scanf(%d",&x); exp+=x for(n=2;n<20;n++ exp+=f1(x, n)/f2(n) printf( "nexp(%d)=%.4f\n"X, exp); 6、从3个红球、5个白球、6个黑球中任意取出8个作为一组,要求在每组中 可以没有黑球,但必须有红球和白球。输出这样的组合数有多少?并且输出每组 中的红、白、黑球数 int ball(int a, int b, nt c, int s) Int l,], K, sum printf( \nred white black for(i=1;<=a;i++) for(=l; j<=b; j++) fo(k=1:k<=ck++) { f(+j+k==s) printf \n%2d%2d%2d, i,j, k);
int i; float s=1; for(i=2;i<=n;i++) s=s*i; return(s); } float f1(int x, int n) { int i; float s=x; for(i=2;i<=n;i++) s=x*s; return(s); } main( ) { float exp=1.0; int x,n; scanf("%d", &x); exp+=x; for (n=2; n<20; n++) exp+=f1(x,n)/f2(n); printf("\nexp(%d)=%.4f\n", x, exp); } 6、从 3 个红球、5 个白球、6 个黑球中任意取出 8 个作为一组,要求在每组中 可以没有黑球,但必须有红球和白球。输出这样的组合数有多少?并且输出每组 中的红、白、黑球数。 int ball(int a,int b,int c,int s) { int i,j,k,sum; printf(“\nred white black:”); for(i=1;i<=a;i++) { for(j=1;j<=b;j++) { for(k=1;k<=c;k++) { if(i+j+k==s) { sum++; printf(“\n%2d%2d%2d”,i,j,k); } }
return (sum) maino int red=3, white=5, black=6,S=8: int sum sum=ball(red, white black,s); printf \nThe total is %dsum); 4.指针及指针参数函数编程 (4)编写一个函数,返回三个整数中的最大数。要求用指针作为函数参数得到最 大数,在主函数中输入输出数据 int max ( int *pl, int p2, int*p3) f(*p1>*p2) if(*p1>*p3) return p1); eturn p3); else if(*p3>*p2) return( p3); else return p2); main int a, b, c 'p1, p2 *p3, m: printf(" \iNput three integers: a, b, c)\n); scanf(%d, %od, %d", &a, &b, &c); p m=max(p1, p2,p printf( " \nThe max is %d", m)
} return(sum); } main() { int red=3,white=5,black=6,s=8; int sum; sum=ball(red,white,black,s); printf(“\nThe total is %d”,sum); } 4.指针及指针参数函数编程 (4) 编写一个函数,返回三个整数中的最大数。要求用指针作为函数参数得到最 大数,在主函数中输入输出数据。 int max(int *p1,int *p2,int *p3) { if(*p1>*p2) { if(*p1>*p3) return(*p1); else return(*p3); } else { if(*p3>*p2) return(*p3); else return(*p2); } } main() { int a,b,c,*p1,*p2,*p3,m; printf("\nInput three integers:(a,b,c)\n"); scanf("%d,%d,%d",&a,&b,&c); p1=&a; p2=&b; p3=&c; m=max(p1,p2,p3); printf("\nThe max is %d",m); }
(6)编写函数,计算π。已知: /4=1-1/3+1/5-1/7+ 直到最后一项的绝对值小于108为止。要求用指针作为函数参数返回计算结果。 #include void pai(double *p) ng for(i=1;1.0/(2*-1)>poW(10,-7)i++) p=*p+10*p0W(-1+1)/(2*-1)方 p=*p*4.0; maino double pi=0; double * p; p=&pi pai(p) printf( \ nPI=%If pi) 5.编写函数,计算一个整数各位数字之和。如123,各位之和为1+2+3=6 nt sum(int m) inta=0,b=0,C=0,d=0,e=0; fm/10000!=0) e=m/10000 d=m/1000-e*10 C=m/100-e*100-d*10; b=m/10-e*1000-d*100-C*10 a=m%10; else if(m/1000=0) d=m/1000 C=m/100-d*10 b=m/10-d*100-c*10; a=m%10 else if(m/100!=0)
(6) 编写函数,计算π。已知: π/4=1-1/3+1/5-1/7+… 直到最后一项的绝对值小于 10-8 为止。要求用指针作为函数参数返回计算结果。 #include void pai(double *p) { long i; for(i=1;1.0/(2*i-1)>pow(10,-7);i++) { *p=*p+1.0*pow(-1,i+1)/(2*i-1); } *p=*p*4.0; } main() { double pi=0; double *p; p=π pai(p); printf("\nPI=%lf",pi); } 5.编写函数,计算一个整数各位数字之和。如 123,各位之和为 1+2+3=6。 int sum(int m) { int a=0,b=0,c=0,d=0,e=0; int s; if(m/10000!=0) { e=m/10000; d=m/1000-e*10; c=m/100-e*100-d*10; b=m/10-e*1000-d*100-c*10; a=m%10; } else if(m/1000!=0) { d=m/1000; c=m/100-d*10; b=m/10-d*100-c*10; a=m%10; } else if(m/100!=0) {
n/100 b=m/10-c*10; a=m%10 else if(m/10=0) b=m/10 a=m%10 else s=a+b+C+d+e return(s) maino int nums printf( "\nPlease input a integer: ) scanf("%d", &num); s=sum(num) printf("nThe sum is %d"s)
c=m/100; b=m/10-c*10; a=m%10; } else if(m/10!=0) { b=m/10; a=m%10; } else a=m; s=a+b+c+d+e; return(s); } main() { int num,s; printf("\nPlease input a integer:"); scanf("%d",&num); s=sum(num); printf("\nThe sum is %d",s); }