实验三
实验三
实验结论
实验任务1
1.源代码
#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; }
截图改
2.源代码
#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; }
截图
结果一致
3.static只确定一次值
实验任务2
1.源代码
#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); }
截图
2.源代码
#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); } }
截图
实验任务3
1.源代码
#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 ans=1; if(n==1) ans=1; else ans=2*fun(n-1)+1; return ans; }
2.截图
实验任务4
1.源代码
#include<stdio.h> int isPrime(int n); int main() { int m; int s; int i; for(i=101;i<=200;i++) { m=0; m=isPrime(i); if(m==1) { printf("%d ",i); s++; if(s%10==0) printf("\n"); } } printf("\n"); printf("101~200之间一共有%d个非素数",s); return 0; } int isPrime(int n) { int i; int t=0; for(i=2;i<n;i++) { if(n%i==0) t=1; } return t; }
2.截图
实验任务5
1.源代码
#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 t,m=1,i; long p=0; while(s!=0) { t=s%10; s=s/10; if(t%2==1) { for(i=1;i<m;i++) t=t*10; p=t+p; m++; } } return p; }
2.截图
实验任务6
1.源代码
#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=1; double ans=0; double i; if(n==1) ans=1; else { for(i=2;i<=n;i++) { m*=-1/i; } ans=m+fun(n-1); } return ans; }
2.截图
实验总结
理解并会使用函数,递归等知识,还需多注意细节