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 }

 

posted @ 2020-12-01 00:07  kagiii  阅读(57)  评论(2编辑  收藏  举报