实验3

task1

 1 #include <stdio.h>
 2 
 3 char score_to_grade(int score);
 4 
 5 int main()
 6 {
 7     int score;
 8     char grade;
 9     
10     while(scanf("%d",&score)!=EOF){
11         grade=score_to_grade(score);
12         printf("分数:%d,等级:%c\n\n",score,grade);
13     }
14 
15     return 0;
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     return ans;
30 }

屏幕截图 2025-10-24 165821

函数score_to_grade作用:计算不同分数所对应的等级

形参类型:整型  返回值类型:字符型

改变后问题:分数>=90时输出“ABCDE”;80<=分数<90时输出“BCDE”:70<=分数<80输出“CDE”;60<=分数<70输出“DE”;分数<60输出“E”

task2

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

屏幕截图 2025-10-24 175744

函数功能:求各个位上数字的和

改变后的代码可以实现同样的输出

区别:改前为迭代,改后为递归

task3

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

屏幕截图 2025-10-24 182034

power的功能:求一个数的n次方

此函数是递归函数,函数递归模式的数学公式为:

IMG_20251024_183043

task4

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

屏幕截图 2025-10-25 212937

task5

方式1:迭代

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

屏幕截图 2025-10-25 153025

方式2:递归

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

屏幕截图 2025-10-25 154215

task6

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

屏幕截图 2025-10-25 133230

task7

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

屏幕截图 2025-10-25 225741

屏幕截图 2025-10-25 225756

 

posted @ 2025-10-25 23:05  ZL425  阅读(6)  评论(0)    收藏  举报