实验4
ex1:
方程的结果并不唯一,无法使用返回值
ex2:
1 #include <stdio.h> 2 long long fac(int n); 3 4 int main() 5 { 6 int i,n; 7 8 printf("Enter n: "); 9 scanf("%d", &n); 10 11 for(i=1; i<=n; ++i) 12 printf("%d! = %lld\n", i, fac(i)); 13 14 return 0; 15 } 16 long long fac(int n) 17 { 18 static long long p = 1; 19 20 p = p*n; 21 printf("p = %lld\n", p); 22 return p; 23 }
1 #include<stdio.h> 2 int func(int, int); 3 4 int main() 5 { 6 int k=4,m=1,p1,p2; 7 8 p1 = func(k,m) ; 9 p2 = func(k,m) ; 10 printf("%d,%d\n",p1,p2) ; 11 12 return 0; 13 } 14 15 int func(int a,int b) 16 { 17 static int m=0,i=2; 18 19 i += m+1; 20 m = i+a+b; 21 22 return (m); 23 }
static局部变量使得变量的值不会被重置
ex3:
1 #include <stdio.h> 2 3 #define N 1000 4 int fun(int n,int m,int bb[N]) 5 { 6 int i,j,k=0,flag; 7 8 for(j=n;j<=m;j++) 9 { 10 flag=1; 11 for(i=2;i<j;i++) 12 if(j%i==0) 13 { 14 flag=0; 15 break; 16 } 17 if(flag==1) 18 bb[k++]=j; 19 } 20 return k; 21 } 22 23 int main() 24 { 25 int n=0,m=0,i,k,bb[N]; 26 27 scanf("%d",&n); 28 scanf("%d",&m); 29 30 for(i=0;i<m-n;i++) 31 bb[i]=0; 32 33 k=fun(n,m,bb); 34 35 for(i=0;i<k;i++) 36 printf("%4d",bb[i]); 37 38 return 0; 39 }
ex4:
1 #include <stdio.h> 2 long long fun(int n); 3 4 int main() 5 { 6 int n; 7 long long f; 8 9 while(scanf("%d", &n) != EOF) { 10 f = fun(n); 11 printf("n = %d, f = %lld\n", n, f); 12 } 13 return 0; 14 } 15 long long fun(int n) 16 { 17 long long f; 18 if(n==0) 19 f=0; 20 else 21 f=2*fun(n-1)+1; 22 return f; 23 }
ex5:
1 #include <stdio.h> 2 3 void draw(int n, char symbol); 4 5 #include <stdio.h> 6 int main() { 7 int n, symbol; 8 9 while(scanf("%d %c", &n, &symbol) != EOF) { 10 draw(n, symbol); 11 12 printf("\n"); 13 } 14 15 return 0; 16 } 17 18 void draw(int n,char symbol) 19 { 20 int a,b; 21 for(a=1;a<=n;a++) 22 { 23 for(b=1;b<=n-a;b++) 24 printf(" "); 25 for(b=1;b<=a*2-1;b++) 26 printf("%c",symbol); 27 printf("\n"); 28 } 29 }
实验总结:函数的调用让思路变得更清晰