实验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("%lld",p); p=p*n; return p; }
#include<stdio.h> int func(int x,int y); 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 x,int y) {static int m=0,i=2; i+=m+1; m=i+x+y; return (m); }
satic变量的作用是使变量始终存在,当再次进入函数时保留上次的值。
#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=0; for(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); } }
两种方法各有优劣,对于这个问题,第一次更简单,也更容易理解。
#include<stdio.h> long long fun(int n); int main() {int n; long long f; while(scanf("%d",&n)!=EOF) {f=fun(n)-1; printf("n=%d,f=%lld\n",n,f); }return 0; } long long fun(int n) {int m,f,k=1; if(n==0) return 1; else{ f= 2*fun(n-1); }return f; }
#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 long fac(long n); int main() { long s,t; printf("Enter a number"); while(scanf("%ld",&s)!=EOF) {t=fac(s); printf("new number is :%ld\n\n",t); printf("Enter a number:"); }return 0; } long long fac(long n) {long long m=0,o; while(n>=10) {if(n%10%2!=0) m=m*10+n%10; n=n/10; }o=0; while(m>0) {o=o*10+m%10; m=m/10; } return o; }
#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 m,i;double o=0,s; for(m=n;m>0;m--) {for(i=1,s=1;s<=n;s++) {i=-1*i*s; }o=-1/i+o; n--; } return o; }