实验三

task1

 1 #include <stdio.h>
 2 
 3 char score_to_grade(int score);  // 函数声明
 4 
 5 int main() {
 6     int score;
 7     char grade;
 8 
 9     while (scanf_s("%d", &score) != EOF) {
10         grade = score_to_grade(score);  // 函数调用
11         printf("分数: %d, 等级: %c\n\n", score, grade);
12     }
13 
14     return 0;
15 }
16 
17 // 函数定义
18 char score_to_grade(int score) {
19     char ans;
20 
21     switch (score / 10) {
22     case 10:
23     case 9:   ans = 'A'; break;
24     case 8:   ans = 'B'; break;
25     case 7:   ans = 'C'; break;
26     case 6:   ans = 'D'; break;
27     default:  ans = 'E';
28     }
29 
30     return ans;
31 }
View Code 1

1

A1 将成绩转换成等级;形参类型为整形,返回值为字符型。

A2 字符应该用单引号引起;每个case最后没有break,导致依次输出。

 

task2

 1 #include <stdio.h>
 2 
 3 int sum_digits(int n);  // 函数声明
 4 
 5 int main() {
 6     int n;
 7     int ans;
 8 
 9     while (printf("Enter n: "), scanf("%d", &n) != EOF) {
10         ans = sum_digits(n);    // 函数调用
11         printf("n = %d, ans = %d\n\n", n, ans);
12     }
13 
14     return 0;
15 }
16 
17 // 函数定义
18 int sum_digits(int n) {
19     int ans = 0;
20 
21     while (n != 0) {
22         ans += n % 10;
23         n /= 10;
24     }
25 
26     return ans;
27 }
View Code2

2

A1 实现各个数位上数字求和

A2 能;原代码是用迭代方法,此代码是用递归的方法,以个位数为出口,实现自身调用。

 

task3

 1 #include <stdio.h>
 2 
 3 int power(int x, int n);    // 函数声明
 4 
 5 int main() {
 6     int x, n;
 7     int ans;
 8 
 9     while (printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) {
10         ans = power(x, n); 
11         printf("n = %d, ans = %d\n\n", n, ans);
12     }
13 
14     return 0;
15 }
16 int power(int x, int n) {
17     int t;
18 
19     if (n == 0)
20         return 1;
21     else if (n % 2)
22         return x * power(x, n - 1);
23     else {
24         t = power(x, n / 2);
25         return t * t;
26     }
27 }
View Code3

3

A1 实现幂函数运算

A2​ 1,x=0

      x*power(x,n-1),n是奇数

      [power(x,n/2)]的平方,n是偶数且n>0

 

 

task4

 1 #define  _CRT_SECURE_NO_WARNINGS
 2 
 3 #include <stdio.h>
 4 int is_prime(int n);
 5 int main()
 6 {
 7     int m=100, n=0;
 8     printf("100以内的孪生素数:\n");
 9 
10     for (int i = 1; i <= (m - 2); i++)
11     {
12         if (is_prime(i) && is_prime(i + 2))
13         {
14             printf("%d %d\n", i, i + 2);
15             n++;
16         }
17 
18     }
19     printf("100以内的孪生素数共%d个.", n);
20     return 0;
21 }
22 int is_prime(int n)
23 {
24     int p = 2;
25 
26     for (p; p <= n; p++)
27     {
28         if (n % p == 0)
29             break;
30     }
31     if (n == p)
32         return 1;
33     else return 0;
34 }
View Code4

4

 

task5

 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_s("%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 int func(int n, int m)
16 {
17     double ans = 1;
18     for (int i = n; i > n - m; i--)
19     {
20         ans *= i;
21     }
22     for (int j = 1; j <= m; j++)
23         ans /= j;
24     return ans;
25 }
View Code5-1

51

 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 int func(int n, int m)
16 {
17     if (m > n) {
18         return 0;
19     }
20     if (m == 0 || m == n) {
21         return 1;
22     }
23     if (m == 1) {
24         return n;
25     }
26     else if (m == 2) {
27         return n * (n - 1) / 2;
28     }
29     else return func(n - 1, m) + func(n - 1, m - 1);
30 }
View Code5-2

52

 

task6

 1 #include <stdio.h>
 2 
 3 int judge(int a, int b);
 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 judge(int a, int b)
18 {
19     int t;
20     while (b != 0) {
21         t = a % b;
22         a = b;
23         b = t;
24     }
25 
26     return a;
27 }
28 int gcd(int a, int b, int c)
29 {
30     int ans;
31 
32     ans = judge(a, b);
33     ans = judge(ans, c);
34 
35     return ans;
36 
37 }
View Code6

6

 

task7

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int print_charman(n);
 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 int print_charman(n)
17 {
18 
19     for (int i = 1; i <= n; i++)
20     {
21         for (int j=i-1;j>0;j--)
22         {
23             printf("\t");
24         }
25         for (int k = 1; k <= 2 * (n - i) + 1; k++)
26         {
27             printf(" O \t");
28         }
29         printf("\n");
30         for (int j = i - 1; j > 0; j--)
31         {
32             printf("\t");
33         }
34         for (int k = 1; k <= 2 * (n - i) + 1; k++)
35         {
36             printf("<H>\t");
37         }
38         printf("\n");
39         for (int j = i - 1; j > 0; j--)
40         {
41             printf("\t");
42         }
43         for (int k = 1; k <= 2 * (n - i) + 1; k++)
44         {
45             printf("I I\t");
46         }
47         printf("\n");
48     }
49 }
View Code7

71

72

 

posted @ 2025-10-25 22:21  Novven  阅读(7)  评论(1)    收藏  举报