实验3

实验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 test[]);
 8 void print_spaces(int n);
 9 void print_blank_lines(int n);
10 
11 int main()
12 {
13     int line, col, i;
14     char test[N] = "hi,November~";
15 
16     srand(time(0));
17 
18     for ( i = 1; i <=10; i++)
19     {
20         line = rand() % 25; 
21         col = rand() % 80;
22         print_text(line, col, test);
23         Sleep(1000);
24     }
25     return 0;
26 }
27 void print_spaces(int n) {
28     int i;
29     for (i = 1; i <= n; ++i)
30         printf(" ");
31 }
32 void print_blank_lines(int n) {
33     int i;
34     for (i = 1; i <= n; ++i)
35         printf("\n");
36 }
37 void print_text(int line, int col, char text[]) {
38     print_blank_lines(line - 1); // 打印(line-1)行空行
39     print_spaces(col - 1); // 打印(col-1)列空格
40     printf("%s", text); // 在第line行、col列输出text中字符串
41 }

 实验2

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

 

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

 

实验3

 1 #include <stdio.h>
 2 long long func(int n); // 函数声明
 3 int main() {
 4     int n;
 5     long long f;
 6     while (scanf_s("%d", &n) != EOF) {
 7         f = func(n); // 函数调用
 8         printf("n = %d, f = %lld\n", n, f);
 9     }
10     return 0;
11 }
12 long long func(int n)
13 {
14     long long i;
15     int k = 1;
16     if (n==1)
17     {
18         return 1;
19     }
20     else
21     {
22         for ( i = 1; i <n; i++)
23         {
24         k = k * 2;
25         }
26      k += func(n-1);
27     return k;
28     }

 实验4

迭代1:

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

 递归2:

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

 实验5

 1 #include<stdio.h>
 2 void move(int x, int y)
 3 {
 4     printf("%c->%c\n", x, y);
 5 }
 6 int hanoi(int n, char a, char b, char c)
 7 {
 8     static int k=0;
 9     k++;
10     if (n==1)
11     {
12         move(a, c);
13     }
14     else
15     {
16         hanoi(n - 1, a, c, b);
17         move(a, c);
18         hanoi(n - 1, b, a, c);
19     }
20     return k;
21 }
22 int main()
23 {
24     int n = 0;
25     scanf_s("%d", &n);
26     printf("一共移动了%d次", hanoi(n, 'A', 'B', 'C'));
27     return 0;
28 }

 实验6

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

 实验7

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

 

posted @ 2023-11-05 21:57  铭懿  阅读(12)  评论(0)    收藏  举报