实验三 C语言函数应用编程

发布时间 2023-10-30 21:05:45作者: If-You

1.实验1

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

功能:实现简单的字符动画

2.实验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("%d",&n);
 9     for(i=1;i<=n;++i)
10         printf("%d!=%lld\n",i,fac(i));
11         
12     return 0;
13 }
14 long long fac(int n){
15     static long long p =1;
16     printf("p=%lld\n",p);
17     
18     p=p*n;
19     
20     return p;
21 }

task2-2.c结果:8,17

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

结果一致

static局部变量:在声明领域初始化一次,在下次进入该作用域时继续使用上次的值。

3.实验3

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

4.实验4

迭代:

 1 #include<stdio.h> 
 2 int func(int n,int m);
 3 int main(){
 4     int n,m;
 5 
 6     while(scanf("%d%d",&n,&m)!=EOF)
 7         printf("n=%d,m=%d,ans=%d\n",n,m,func(n,m));
 8     return 0;
 9 }
10 int func(int n,int m){
11    int i,j,up,down,ans;
12    up=1;
13    down=1;
14    for(i=1;i<=m;++i)
15          down=down*i; 
16    for(j=n-m+1;j<=n;++j)
17        up=up*j;
18    ans=up/down;
19    return ans;
20 }

递归:

 1 #include<stdio.h> 
 2 int func(int n,int m);
 3 int main(){
 4     int n,m;
 5 
 6     while(scanf("%d%d",&n,&m)!=EOF)
 7         printf("n=%d,m=%d,ans=%d\n",n,m,func(n,m));
 8     return 0;
 9 }
10 int func(int n,int m){
11     int ans;
12     if(m==0||m==n)
13        ans=1;
14     else if(m>n)
15        ans=0;
16     else
17        ans=func(n-1,m)+func(n-1,m-1);
18 
19 
20    return ans;
21 }

5.实验5

 1 void hanoi(unsigned int n,char from,char temp,char to);
 2 void moveplate(unsigned int n,char from,char to);
 3 int count;
 4 int main(){
 5     unsigned int n;
 6     while(scanf("%u",&n)!=EOF){
 7         count=0;
 8         hanoi(n,'A','B','C');
 9         printf("一共移动了%d次",count);
10         }
11         
12     return 0;
13 }
14 void hanoi(unsigned int n,char from,char temp,char to){
15     if(n==1)
16        moveplate(n,from,to);
17     else{
18         hanoi(n-1,from,to,temp);
19         moveplate(n,from,to);
20         hanoi(n-1,temp,from,to);
21     }  
22 }
23 void moveplate(unsigned int n,char from,char to){
24     printf("%u:%c-->%c\n",n,from,to);
25     count++;
26     
27 }

6.实验6

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

 7.实验7

 1 #include<stdio.h>
 2 
 3 int main(){
 4     int x[10],i,j,a,b,c;
 5     a=0;
 6     
 7     while(1){
 8         a++;
 9         b=1;
10         for(i=0;i<10;++i)
11             x[i]=0;
12         c=a*a;
13         while(c){
14             j=c%10;
15             x[j]++;
16             if(x[j]>1){
17                 b=0;
18                 break;
19             }
20             c=c/10;
21         }
22         if(b==0)
23            continue;
24         c=a*a*a;
25         while(c){
26             j=c%10;
27             x[j]++;
28             if(x[j]>1){
29                 b=0;
30                 break;
31             }
32             c=c/10;}
33         if(b==0)
34            continue;
35         for(i=0;i<10;++i){
36             if(x[i]!=1){
37                 b=0;
38                 break;
39             }  
40         }
41         if(b){
42             printf("%d %d %d\n",a,a*a,a*a*a);
43             break;
44         }
45     }
46 
47 }