实验四
实验一:
个人认为该函数有两个返回值,而返回时只返回一个值,故不能用该方式。
实验二
1 #include <stdio.h> 2 long long fac(int n); // 函数声明 3 4 int main() { 5 int i,n; 6 7 printf("Enter n: "); 8 scanf("%d", &n); 9 10 for(i=1; i<=n; ++i) 11 printf("%d! = %lld\n", i, fac(i)); 12 13 return 0; 14 } 15 16 // 函数定义 17 long long fac(int n) { 18 static long long p = 1; 19 20 p = p*n; 21 22 return p; 23 }

static变量将每次运行函数后的结果存储回原来的变量中,再次进入函数时使用上次结果。
实验三
1 //寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 2 // 例如,输入6和21,则输出为:7 11 13 17 19。 3 4 #include <stdio.h> 5 6 #define N 1000 7 int fun(int n,int m,int bb[N]) { 8 int i,j,k=0,flag; 9 10 for(j=n;j<=m;j++) { 11 12 for(i=2;i<j;i++) 13 if(j%i==0) { 14 flag=0; 15 break; 16 } 17 if(i==j) 18 bb[k++]=j; 19 } 20 return k; 21 } 22 23 int main(){ 24 int n=0,m=0,i,k,bb[N]; 25 26 scanf("%d",&n); 27 scanf("%d",&m); 28 29 for(i=0;i<m-n;i++) 30 bb[i]=0; 31 32 k=fun(n,m,bb); 33 34 for(i=0;i<k;i++) 35 printf("%4d",bb[i]); 36 37 return 0; 38 }

实验四
1 #include <stdio.h> 2 long long fun(int n); // 函数声明 3 4 int main() { 5 int n; 6 long long f; 7 8 while(scanf("%d", &n) != EOF) { 9 f = fun(n); // 函数调用 10 printf("n = %d, f = %lld\n", n, f); 11 } 12 13 return 0; 14 } 15 16 long long fun(int n) 17 { 18 int a,b; 19 long long s; 20 21 for(a=1,b=2;n>0;n-=1) 22 { 23 a*=b; 24 } 25 26 s=a-1; 27 28 return s; 29 }

实验五
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 19 void draw(int n,char symbol) 20 { 21 int j,a,k; 22 23 for(j=1,a=0;a<n;j++) 24 { 25 for(k=1;k<n+j;k++) 26 { 27 if(k<n+1-j) 28 { 29 printf("%c",' '); 30 } 31 else if(k>=n-j+1||k<n+j) 32 { 33 printf("%c",symbol); 34 } 35 } 36 printf("\n"); 37 a+=1; 38 } 39 40 }


浙公网安备 33010602011771号