实验3
#include<stdio.h> long long fac(int n); int main() { int i,n; printf("Enter n:"); scanf("%d",&n); for(i=1;i<=n;++i) printf("%d! = %lld\n",i,fac(i)); return 0; } long long fac(int n) { static long long p=1; p=p*n; return p; }
#include<stdio.h> long long fac(int n); int main() { int i,n; printf("Enter n:"); scanf("%d",&n); for(i=1;i<=n;++i) printf("%d! = %lld\n",i,fac(i)); return 0; } long long fac(int n) { static long long p=1; printf("p=%lld\n",p); p=p*n; return p; }
static将值设定为静态变量,每次值改变后均存储,下次继续使用
#include<stdio.h> int func(int,int); int main() { int k=4,m=1,p1,p2; p1=func(k,m); p2=func(k,m); printf("%d,%d\n",p1,p2); return 0; } int func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return (m); }
#include<stdio.h> void printSymbol(int n,char symbol); int main() { int n; char symbol; while(scanf("%d %c",&n,&symbol)!=EOF) { printSymbol(n,symbol); printf("\n"); } return 0; } void printSymbol(int n,char symbol) { int i; for(i=1;i<=n;i++) printf("%c",symbol); return ; }
#include<stdio.h> void printSymbol(int n,char symbol); int main() { int n; char symbol; while(scanf("%d %c",&n,&symbol)!=EOF) { printSymbol(n,symbol); printf("\n"); } return 0; } void printSymbol(int n,char symbol) { if(n==1) printf("%c",symbol); if(n>1) { printf("%c",symbol); return printSymbol(n-1,symbol); } }
结果并不复杂时,迭代更为方便简洁,递归技巧性更强
#include<stdio.h> long long fun(int n); int main() { int n; long long f; while(scanf("%d",&n)!=EOF) { f=fun(n); printf("n = %d,f=%lld\n",n,f); } return 0; } long long fun(int n) { long long m; if(n==0) return 0; else if(n==1) return 1; else if(n>1) return 2*(fun(n-1)+1)-1; }
#include<stdio.h> #include<math.h> int isPrime(int n); int main() { int i,m=0; for(i=101;i<201;i++) { if(isPrime(i)==0) { printf("%4d",i); m++; if(m%10==0) printf("\n"); } } printf("\n"); printf("101~200之间一共有%d个非素数\n",m); return 0; } int isPrime(int n) { int p,q; q=(int)sqrt((double)n); for(p=2;p<=q;p++) { if(n%p==0) break; } if(p>q) return 1; else return 0; }
#include<stdio.h> long fun(long s); int main() { long s,t; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF) { t=fun(s); printf("new number is:%ld\n\n",t); printf("Enter a number:"); } return 0; } long fun(long s) { long m=0; long n=0,p=1; while(s>0) { m=s%10; if(m%2!=0) { n = n+m*p; p=p*10; } s=s/10; } return n; }
#include<stdio.h> double fun(int n); int main() { int n; double s; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF) { s=fun(n); printf("n = %d,s = %f\n\n",n,s); printf("Enter n(1~10):"); } return 0; } double fun(int n) { int a,b,c; double d,f; f=0; for(n;n>0;n--) { if(n%2==0) a=-1; else a=1; c=1; for(b=1;b<=n;b++) c=c*b; d=1.0/c*a; f=f+d; } return f; }