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; }
#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); }
局部static变量的特性为静态变量,他不是自动变量,他是一个可初始化值的变量,他的值在函数结束后不会被回收而是会被保存。
#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) { for (int i = 0;i < n;i++) { printf("%c", symbol); } }
#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); else {printf("%c",symbol); printsymbol(n-1,symbol); } }
个人任务第2种更简便更容易理解
#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 int result; if(n==1) result=1; else result=2*(fun(n-1)+1)-1; return result; }
#include<stdio.h> int isprime(int n); int main() { int n,m,k; for(n=101,k=0;n<=200;n++) { m=isprime(n); if(m==1) { printf("%d\t",n); k++; } } printf("\n101µ½200ÓÐ%d¸ö·ÇËØÊý",k); return 0; } int isprime(int n) { int m=0,k,l,o=0; for(l=2;l<n-2;l++) if(n%l==0) o++; if(o!=0) 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){ int i=1; int t; int num=0; while(s!=0){ t = s%10; if (t % 2 ==1){ num = num + t*i; i *=10; } s = s/10; } return num; }
#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) { double sum; int i,sign,bottom; sum=0; sign=1; bottom=1; for(i=1;i<=n;i++) { bottom=bottom*i; sum=sum+1.0*1/bottom*sign; sign=sign*(-1); } return sum; }