实验3 函数

1.task1

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 #include<windows.h>
 5 #define N 80
 6 
 7 void printText(int line,int col,char text[]);
 8 void printSpaces(int n);
 9 void printBlankLines(int n);
10 
11 int main()
12 {
13     int line,col,i;
14     char text[N]="hi,May~";
15     
16     srand(time(0));
17     
18     for(i=1;i<=10;++i)
19     {
20         line=rand()%25;
21         col=rand()%80;
22         printText(line,col,text);
23         Sleep(1000);
24     }
25     
26     return 0;
27 } 
28 
29 void printSpaces(int n)
30 {
31     int i;
32     
33     for(i=1;i<=n;++i)
34     printf(" ");
35 }
36 
37 void printBlankLines(int n)
38 {
39     int i;
40     
41     for(i=1;i<=n;++i)
42     printf("\n");
43 }
44 
45 void printText(int line,int col,char text[])
46 {
47     printBlankLines(line-1);
48     printSpaces(col-1);
49     printf("%s",text);
50     
51 }

循环一下步骤10次:1.打印0~24个空行 2.打印0~79个空格 3.打印“hi,May~”

 

2.task2_1

 1 #include<stdio.h>
 2 
 3 long long fac(int n);
 4 
 5 int main()
 6 {
 7     int i,n;
 8     
 9     printf("Enter n:");
10     scanf("%d",&n);
11     
12     for(i=1;i<=n;++i) 
13         printf("%d!=%lld\n",i,fac(i));
14         
15     return 0;
16 } 
17 
18 long long fac(int n)
19 {
20     static long long p=1;
21     //printf("p =%lld\n",p);
22     p=p*n;
23     
24     return p;
25 }

 

 

3.task2_2

 1 #include<stdio.h>
 2 
 3 int func(int a,int b);
 4 
 5 int main()
 6 {
 7     int k=4,m=1,p1,p2;
 8     
 9     p1=func(k,m);
10     p2=func(k,m);
11     printf("%d,%d\n",p1,p2);
12     
13     return 0;
14 }
15 
16 int func(int a,int b)
17 {
18     static int m=0,i=2;
19     
20     i+=m+1;
21     m=i+a+b;
22     
23     return m;
24 }

 

 

 

 局部static变量仅在声明后调用的函数中使用,且变量保留的值可用于下一次调用。

 

4.task3

 1 #include<stdio.h>
 2 
 3 long long fun(int n);
 4 
 5 int main()
 6 {
 7     int n;long long f;
 8     
 9     while(scanf("%d",&n)!=EOF)
10     {
11         f=fun(n);
12         printf("n = %d,f = %lld\n\n",n,f);
13     }
14     
15     return 0;
16 }
17 
18 long long fun(int n)
19 {
20     static long long m;
21     if(n>=1&&n<=32)
22     {
23         m=2*fun(n-1)+1;
24     }
25     else if(n==0) m=0;
26     
27     return m;
28 }

 

 

 

 5.task4

 1 #include<stdio.h>
 2 
 3 void hanoi(unsigned int n,char from,char temp,char to);
 4 void moveplate(unsigned int n,char from,char to);
 5 int i;
 6 
 7 int main()
 8 {
 9     unsigned int n;
10     while(scanf("%u",&n)!=EOF)
11     {
12         i=0;
13         hanoi(n,'A','B','C');
14         printf("\n一共移动了%d次\n",i);
15         printf("\n\n");
16         
17     }
18     
19     return 0;
20 }
21 
22 void hanoi(unsigned int n,char from,char temp,char to)
23 {
24     if(n==1)
25     {
26         moveplate(n,from,to);
27     }
28     else
29     {
30         hanoi(n-1,from,to,temp);
31         moveplate(n,from,to);
32         hanoi(n-1,temp,from,to);
33     }
34 
35 }
36 
37 void moveplate(unsigned int n,char from,char to)
38 {
39     printf("第%u个盘子:%c-->%c\n",n,from,to);
40     i++;
41 }

 

6.task5

 1 #include<stdio.h>
 2 #define N 20
 3 
 4 void is_prime(int n);
 5 
 6 int main()
 7 {
 8     int j;
 9     for(j=4;j<=N;j++)
10     {
11         if(j%2==0)
12         {
13             is_prime(j);
14         }    
15     }
16     return 0;
17 }
18 
19 void is_prime(int n)
20 {
21     int i,k,num1,num2;
22     for(num1=2;num1<n;num1++)
23     {
24         k=0;
25         for(i=2;i<num1;i++)
26         {
27             if(num1%i==0) k++;
28         }
29         
30         if(k==0)
31         {
32             num2=n-num1;
33         }
34         
35         k=0;
36         for(i=2;i<num2;i++)
37         {
38             if(num2%i==0) k++;
39         }
40         
41         if(k==0&&num2>1&&num1<=num2)
42         {
43             printf("%d = %d + %d\n",n,num1,num2);
44             break;
45         }
46     }
47 }

 

 

7.task6

 1 #include<stdio.h>
 2 
 3 long fun(long s);
 4 
 5 int main()
 6 {
 7     long s,t;
 8     printf("Enter a number:");
 9     while(scanf("%ld",&s)!=EOF)
10     {
11         t=fun(s);
12         printf("new number is:%ld\n\n",t);
13         printf("Enter a number:");
14     }
15     return 0;
16 }
17 
18 long fun(long s)
19 {
20     int n,k=1;long m,p=0;
21     m=s;
22     while(m!=0)
23     {
24         n=m%10;
25         if(n%2!=0)
26         {
27             p+=k*n;
28             k*=10;
29         }
30         m/=10;
31     }
32     s=p;
33     
34     return s;    
35 }

 

posted @ 2022-04-19 23:26  yuki丶丶  阅读(63)  评论(3)    收藏  举报