实验三

1.(1)将输入的数转为等级,形参类型int,返回值类型char

(2)没有break会让输入一个数后有多值输出,如输入就是会从A输出然后输出B直至到E

 

2.(1)计算出输入的这个数的各位数之和

(2)能,原函数是使用循环迭代思维,提取各位数字累加。后一种是递归思维,当前位数字 + 剩余数字的各位和

 

 

 

3.(1)计算x的n次幂

(2)是,power(x,n)=1,n=0

                                  =x*power(x,n-1),n为奇数

                                  =(power(x,n/2))^2,n为偶数

 

 1 #include <stdio.h>
 2 int is_prime(int n);
 3 int main() {
 4     int count = 0;
 5     printf("100以内的孪生素数:\n");
 6     for (int n = 2; n + 2 <= 100; n++) {
 7         if (is_prime(n) && is_prime(n + 2)) {
 8             printf("%d %d\n", n, n + 2);
 9             count++;
10         }
11     }
12     printf("100以内的孪生素数共有%d个.\n", count);
13     return 0;
14 }
15 int is_prime(int n) {
16     if (n <= 1) {
17         return 0;
18     }
19     for (int i = 2; i * i <= n; i++) {
20         if (n % i == 0) {
21             return 0;
22         }
23     }
24     return 1;
25 }
4

image

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

屏幕截图 2025-10-30 150014

 1 #include <stdio.h>
 2 int func(int n, int m);   // 函数声明
 3 
 4 int main() {
 5     int n, m;
 6     int ans;
 7 
 8     while (scanf("%d%d", &n, &m) != EOF) {
 9         ans = func(n, m);   // 函数调用
10         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
11     }
12 
13     return 0;
14 }
15 
16 int func(int n, int m) {
17     if (m < 0 || m > n) return 0;
18     if (m == 0 || m == n) return 1;
19     return func(n - 1, m) + func(n - 1, m - 1);
20 }
5,递归
 1 #include <stdio.h>
 2 
 3 // 函数声明
 4 int gcd(int a, int b, int c);
 5 
 6 int main() {
 7     int a, b, c;
 8     int ans;
 9 
10     while (scanf("%d%d%d", &a, &b, &c) != EOF) {
11         ans = gcd(a, b, c);     // 函数调用
12         printf("最大公约数:%d\n\n", ans);
13     }
14 
15     return 0;
16 }
17 int gcd(int a, int b, int c) {
18     int min = a;
19     if (b < min) min = b;
20     if (c < min) min = c;
21     for (int i = min; i >= 1; i--) {
22         if (a % i == 0 && b % i == 0 && c % i == 0) {
23             return i;
24         }
25     }
26     return 1;
27 }
6

image

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 void print_charman(int);
 5 
 6 int main() {
 7     int n;
 8 
 9     printf("Enter n: ");
10     scanf("%d", &n);
11     print_charman(n);
12 
13     return 0;
14 }
15 
16 void print_charman(int n) {
17     int i, j, k;
18     for (j = n; j > 0; j--)
19     {
20         for (k = 0; k < n - j; k++)
21             printf("\t");
22         for (i = 0; i < j * 2 - 1; i++)
23             printf(" O \t");
24         printf("\n");
25         for (k = 0; k < n - j; k++)
26             printf("\t");
27         for (i = 0; i < j * 2 - 1; i++)
28             printf("<H>\t");
29         printf("\n");
30         for (k = 0; k < n - j; k++)
31             printf("\t");
32         for (i = 0; i < j * 2 - 1; i++)
33             printf("I I\t");
34         printf("\n");
35     }
36 }
7

image

 

posted @ 2025-10-30 15:51  .hh  阅读(9)  评论(1)    收藏  举报