实验三

实验任务一

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

屏幕截图 2025-10-28 190548

Q1:通过整除得到十位上的数,判断分数在哪个区间;整形;字符型

Q2:程序满足其中一行代码并运行完成后,会继续执行下一行代码,不会退出switch语句

实验任务二

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include<stdlib.h>
 4 
 5 int sum_digits(int n); 
 6 int main() {
 7     int n;
 8     int ans;
 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     return 0;
14 }
15 
16 int sum_digits(int n) {
17     int ans = 0;
18     while (n != 0) {
19         ans += n % 10;
20         n /= 10;
21     }
22     return ans;
23 }
View Code

屏幕截图 2025-10-28 192532

Q1:算n的所有位数之和

Q2:能,第一种算法是累加,第二种是递归

 

实验任务三

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include<stdlib.h>
 4 
 5 int power(int x, int n); 
 6 int main() {
 7     int x, n;
 8     int ans;
 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 
17 int power(int x, int n) {
18     int t;
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 Code

屏幕截图 2025-10-30 160450

Q1:计算X的n次方

Q2:

BC9EF88B1C52887C8AA639A5CF3080DA

 

实验任务四

 

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

屏幕截图 2025-10-30 184641

实验任务五

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include<stdlib.h>
 4 
 5 int func(int n, int m);   // 函数声明
 6 int main() {
 7     int n, m;
 8     int ans;
 9     while (scanf("%d%d", &n, &m) != EOF) {
10         ans = func(n, m);   // 函数调用
11         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
12     }
13     return 0;
14 }
15 //函数定义
16 int func(int n, int m) {
17     int t, j, i,ans;
18     if (n < m)
19         return 0;
20     if (n == m)
21         return 1;
22     if (m == 0)
23         return 1;
24     else {
25         for (i = 1, t = 1; i <= m; ++i) {
26             t *= i;
27         }
28         for (i = (n - m + 1), j = 1; i <= n; ++i) {
29             j *= i;
30         }
31         ans = j / t;
32 
33         return ans;
34     }
35 }
View Code

屏幕截图 2025-10-30 194050

 

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

屏幕截图 2025-10-30 194050

实验任务六

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include<stdlib.h>
 4 
 5 // 函数声明
 6 int gcd();
 7 
 8 int main() {
 9     int a, b, c;
10     int ans;
11     while (scanf("%d%d%d", &a, &b, &c) != EOF) {
12         ans = gcd(a, b, c);     // 函数调用
13         printf("最大公约数: %d\n\n", ans);
14     }
15     return 0;
16 }
17 // 函数定义
18 int gcd(int a, int b, int c) {
19     int i, j;
20     if (a < b && a < c)
21         i = a;
22     else if (b < c && b < a)
23         i = b;
24     else
25         i = c;
26     for (j = i; j >= 1; --j) {
27         if (a % j == 0 && b % j == 0 && c % j == 0)
28             return j;
29     }
30     return j;
31 }
View Code

屏幕截图 2025-10-30 200551

实验任务七

 

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

屏幕截图 2025-10-30 205223

 

posted @ 2025-10-30 20:54  刘奕晨  阅读(7)  评论(1)    收藏  举报