实验三
//task1_1.cpp #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; }

//task1_2.cpp #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变量特性(静态变量):在一次调用之后赋给某一变量的值保持不变并可以被继续调用。
//task2 迭代 #include <stdio.h> void printSymbol(int n,char symbol); int main() { int n,i; char symbol; while(scanf("%d %c",&n,&symbol)!=EOF) { printSymbol(n,symbol); printf("\n"); } return 0; } void printSymbol(int a,char b) { int i; for(i=1;i<=a;i++) printf("%c",b); printf("\n"); }

//task2 递归 #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 { printSymbol(n-1,symbol); printf("%c",symbol); } }

针对该编程,我认为迭代较简单,因为过程并不复杂,迭代能够很好的实现。
//task3 #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){ int a; long long f=1,s; for(a= 1;a<=n;++a) { f=f*2; } s=f-1; return s; }

//task 4 #include<stdio.h> int isp(int); int main() { int a; int b=0; for(a=101;a<201;a++) { if(isp(a)==1) { printf("%d\t",a); b=b+1; } } printf("\n101~200之间一共有%d个非素数",b); return 0; } int isp(int n) { int i; for(i=2;i<n;i++) if(n%i==0) return 1; return 0; }

//taks 5 #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,i=1; int num=0; while(s>0) { t = s%10; if (t % 2 ==1) { num = num + t*i; i *=10; } s/=10; } return num; }

#include<stdio.h> #include<math.h> double fun(int n); double fac(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) { if(n==1) return 1; else return fun((n-1))+pow((-1),(n-1))/fac(n); } double fac(int a) { int i; double p = 1; for(i=1;i<=a;i++) { p = p*i; } return p; }

实验总结:知识点掌握不全,递归不熟练,抽象数学公式和文本的能力不足。(我好菜啊)

浙公网安备 33010602011771号