exp4444
实验任务1
一元二次方程的根,不能否设计成以函数返回值的方式返回给主调函数。
因为,当delta>0或者<0 时,一元二次方程有两个根。
实验任务2
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_s("%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 }
1 #include<stdio.h> 2 int func(int, int); 3 4 int main() { 5 int k=4,m=1,p1,p2; 6 7 p1 = func(k,m) ; 8 p2 = func(k,m) ; 9 printf("%d,%d\n",p1,p2) ; 10 11 return 0; 12 } 13 14 int func(int a,int b) { 15 static int m=0,i=2; 16 17 i += m+1; 18 m = i+a+b; 19 20 return (m); 21 }
第一次调用func函数后, i = 3 , m = 8 .因为 i 和 m 是static变量,所以i和m 占用的内存空间不会被释放,即i和m 的值保留 不会在第二次调用func函数时被初始化。
只能在第一次定义时才会被初始化,这是static变量的特点。
实验任务3
1 #include <stdio.h> 2 3 #define N 1000 4 int fun(int n,int m,int bb[N]) { 5 int i,j,k=0,flag; 6 7 for(j=n;j<=m;j++) { 8 flag = 1; 9 for(i=2;i<j;i++) 10 if(j%i==0) { 11 flag=0; 12 break; 13 } 14 if(flag) 15 bb[k++]=j; 16 } 17 return k; 18 } 19 20 int main(){ 21 int n=0,m=0,i,k,bb[N]; 22 23 scanf_s("%d",&n); 24 scanf_s("%d",&m); 25 26 for (i = 0; i < m - n; i++) 27 bb[i] = 0; 28 29 k=fun(n,m,bb); 30 31 for(i=0;i<k;i++) 32 printf("%4d",bb[i]); 33 34 return 0; 35 }
实验任务4
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_s("%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 long long sum; 19 20 if (n == 1) 21 { 22 sum = 1; 23 } 24 if(n>=2) 25 { 26 sum = 2*fun(n-1)+1; 27 28 } 29 30 return sum; 31 }
实验任务5
1 #include <stdio.h> 2 3 void draw(int n, char symbol); // 函数声明 4 5 #include <stdio.h> 6 int main() { 7 int n; 8 char symbol; 9 10 while(scanf_s("%d %c", &n, &symbol)!= EOF) { 11 draw(n, symbol); // 函数调用 12 printf("\n"); 13 } 14 15 return 0; 16 } 17 18 void draw(int n, char symbol) 19 { 20 int m; 21 int i = 1; 22 int a = 1; 23 int j = 1; 24 m = n - 1; 25 while (i <= n) 26 { 27 while (j <= m) 28 { 29 printf(" "); 30 j++; 31 } 32 j = 1; 33 m--; 34 while (a <= (2 * i)-1) 35 { 36 printf("%c", symbol); 37 a++; 38 } 39 printf("\n"); 40 i++; 41 a = 1; 42 43 } 44 45 }