实验3

task1

代码

 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,Noverber~";
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     
24     return 0;
25 }
26 
27 void print_spaces(int n){
28     int i;
29     
30     for(i = 1;i <= n;++i){
31         printf(" ");
32     }
33 }
34 
35 void print_blank_lines(int n){
36     int i;
37     
38     for(i = 1;i <= n;++i){
39         printf("\n");
40     }
41 }
42 
43 void print_text(int line,int col,char text[]){
44     print_blank_lines(line-1);
45     print_spaces(col-1);
46     printf("%s",text);
47 }

结果

功能

随机生成10个位置的“hi,Noverber~”

task2_1

代码

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

结果

task2_2

代码

 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 }

结果

特性:static变量只能初始化一次,生命周期为整个程序的运行期间。

task3

代码

 1 #include<stdio.h>
 2 long long func(int n);
 3 
 4 int main(){
 5     int n;
 6     long long f;
 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 
15 long long func(int n){
16     if(n==1){
17         return 1;
18     }else{
19         return 2*func(n-1)+1;
20     }
21 }

结果

task4_1

代码

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

结果

task4_2

代码

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

结果

task5

代码

 1 #include<stdio.h>
 2 void han(unsigned int n,char from,char temp,char to);
 3 void move(unsigned int n,char from,char to);
 4 
 5 int main(){
 6     unsigned int n;
 7     while(scanf("%u",&n)!=EOF){
 8         han(n,'A','B','C');        
 9     }
10     return 0;
11 }
12 
13 void han(unsigned int n,char from,char temp,char to){
14     if(n==1){
15         move(n,from,to);
16     }else{
17         han(n-1,from,to,temp);
18         move(n,from,to);
19         han(n-1,temp,from,to);
20     }
21 }
22 
23 void move(unsigned int n,char from,char to){
24     printf("%u:%c-->%c\n",n,from,to);
25 }

结果

task6

代码

 1 #include<stdio.h>
 2 #include<math.h>
 3 long func(long s);
 4 
 5 int main(){
 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 
18 long func(long s){
19     int i,y;
20     long k=0,j=0;
21     while(s!=0){
22         i=s%10;
23         if(i%2!=0){
24             k=k*10+i;
25         }
26         s=s/10;
27     }
28     while(k!=0){
29         y=k%10;
30         j=j*10+y;
31         k=k/10;
32     }
33     return j;
34 }

结果

task7

代码

 1 #include<stdio.h>
 2 int check(int n);
 3 
 4 int main(){
 5     int n;
 6     for(n=1;n>0;n++){
 7         if(check(n)){
 8             printf("%d",n);
 9             break;
10         }
11     }    
12     return 0;
13 } 
14 
15 int check(int n){
16     int a=n*n;
17     int b=n*n*n; 
18     int d[10]={0};
19     int i;
20     
21     while(a!=0){
22         d[a%10]++;
23         a/=10;
24     }
25     while(b!=0){
26         d[b%10]++;
27         b/=10;
28     }
29     for(i=0;i<10;i++){
30         if(d[i]!=1){
31             return 0;
32         }
33     }
34     
35     return 1; 
36 }

结果

 

posted @ 2023-10-30 20:59  陈熠涛  阅读(26)  评论(0)    收藏  举报