实验3

实验任务1

源代码

 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  }

运行截图

捕获

问题1:将整形变为字符,形参类型为int,返回值为char

问题2:少break不能终止,输出结果变为字符串

实验任务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  int sum_digits(int n){
17      int ans = 0;
18      
19      while(n != 0){
20          ans += n % 10;
21          n /= 10;
22      }
23      return ans;
24  }
25  
26  

运行截图

2

问题1:计算n的每位数子之和

问题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     return 0;
14  }
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  }
29  

运行截图

3

问题1:计算n的x次方

问题2:

屏幕截图 2025-10-29 193855

 

实验任务4

源代码

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

运行截图

屏幕截图 2025-10-29 185128

实验任务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 
16 // 函数定义
17 int func(int n, int m){
18     int ans, i, a = 1, b = 1;
19     if(m == 1 || m == n){
20     return 1;}
21     if(m>n){
22         return 0;
23     }
24     for(i = 1;i<=m;++i){
25     a *= (n - i + 1);
26     b *= i;}
27     ans = a / b;
28     return ans;
29 }

运行截图

屏幕截图 2025-10-29 184914

递归

 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 // 函数定义
17 int func(int n, int m){
18     if(m == 0 || m == n){
19         return 1;
20     }
21     else if(m > n){
22         return 0;
23     }
24     else{
25         return func(n-1, m) + func(n-1 , m-1);
26     }
27 }

运行截图

屏幕截图 2025-10-29 184914

实验任务6

源代码

 1 #include <stdio.h>
 2 
 3 // 函数声明
 4 int gcd(int a, int b, int c);
 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 
19 
20 // 函数定义
21 int gcd(int a, int b, int c){
22     int i;
23     i = a;
24     if(b < a)
25     i = b;
26     if(c < a)
27     i = c;
28     for(i;i>=1;--i){
29         if(a%i==0 && b%i==0 && c%i==0)
30         return i;
31     }
32 }

运行截图

屏幕截图 2025-10-29 191218

实验任务7

源代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 // 函数声明
 5 void print_charman(int n);
 6 
 7 
 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 
18 // 函数print_charman定义
19 void print_charman(int n)
20 {
21 int i, j, k;
22 for (i = n; i >= 1; --i)
23 {
24 for (j = 1; j <= n - i; j++)
25 printf("\t");
26 for (k = 1; k <= 2 * i - 1; ++k)
27 printf(" O \t");
28 printf("\n");
29 for (j = 1; j <= n - i; j++)
30 printf("\t");
31 for (k = 1; k <= 2 * i - 1; ++k)
32 printf("<H>\t");
33 printf("\n");
34 for (j = 1; j <= n - i; j++)
35 printf("\t");
36 for (k = 1; k <= 2 * i - 1; ++k)
37 printf("I I\t");
38 printf("\n");
39 }
40 }

运行截图

屏幕截图 2025-10-29 192833

 

posted @ 2025-10-29 19:40  humeop  阅读(4)  评论(0)    收藏  举报