实验3

任务1

 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("%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 }

image

 1将分数转换为等级 ;整数;字符

2 60分以上的会有多个等级

任务2

 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 }

image

 1 计算各位数数字之和

2 能,第一种为迭代,由简到难;第二种为递归,有难到简

任务3

 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 
17 // 函数定义
18 int power(int x, int n) {
19     int t;
20 
21     if(n == 0)
22         return 1;
23     else if(n % 2)
24         return x * power(x, n-1);
25     else {
26         t = power(x, n/2);
27         return t*t;
28     }
29 }

 

image

 1 计算x的n此方

2 x`2n+1=x*x`2n;

   x`2n=(x`n)`2;

任务4

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

 

image

 任务5

 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     int i = 1, j = n;
17     int s = 1;
18     for (; i <=m;) {
19         s = s*j / i;
20         j--;
21         i++;
22         }
23     if (n < m)
24         return 0;
25 
26 
27     return s;
28 
29 }

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 int func(int n, int m) {
16     if (n < m)
17         return 0;
18 
19     if (n ==m||m==0)
20         return 1;
21     
22     return func(n - 1, m - 1) + func(n - 1, m);
23 
24 }

 

 

image

 任务6

 1 #include <stdio.h>
 2 int gcd(int a, int b, int c);
 3 // 函数声明
 4 // 待补足....
 5 
 6 
 7 int main() {
 8     int a, b, c;
 9     int ans;
10 
11     while(scanf("%d%d%d", &a, &b, &c) != EOF) {
12         ans = gcd(a, b, c);     // 函数调用
13         printf("最大公约数: %d\n\n", ans);
14     }
15 
16     return 0;
17 }
18 int gcd(int a, int b, int c) {
19     int r1,r2;
20     while (b != 0) {
21         r1 = a % b;
22         a = b;
23         b = r1;
24     }
25     while (c != 0) {
26         r2 = a % c;
27         a = c;
28         c = r2;
29     }
30     return a;
31 
32 
33 
34 }
35 
36 // 函数定义
37 // 待补足...

 

image

 任务7

 

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

image

 

posted @ 2025-10-28 19:47  张晨熙  阅读(7)  评论(1)    收藏  举报