实验三

实验一

 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 char score_to_grade(int score) {
18     char ans;
19 
20     switch(score/10) {
21     case 10:
22     case 9:   ans = 'A'; break;
23     case 8:   ans = 'B'; break;
24     case 7:   ans = 'C'; break;
25     case 6:   ans = 'D'; break;
26     default:  ans = 'E';
27     }
28 
29     return ans;
30 }
View Code

屏幕截图 2026-04-21 155331

问题一:将分数转化为相应的等级。int,char。

问题二:缺少break,双引号改为单引号。

实验二

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

屏幕截图 2026-04-21 160125

问题一:计算整数各位数字之和。

问题二:能。一个是迭代,一个是递归。

实验三

 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 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

屏幕截图 2026-04-21 161040

问题一:进行幂运算。

问题二:是。

                      {1      n=0          

power(x,n)={x*power(x,n-1)     n为奇

             {【power(x,n/2)】2    n为偶

实验四

 1 #include <stdio.h>
 2 
 3 int classify_triangle(int a, int b, int c);
 4 
 5 int main() {
 6     int a, b, c;
 7     while (scanf("%d %d %d", &a, &b, &c) != EOF) {
 8         int type = classify_triangle(a, b, c);
 9         switch (type) {
10             case 0: printf("不能构成三角形\n"); break;
11             case 1: printf("普通三角形\n"); break;
12             case 2: printf("等边三角形\n"); break;
13             case 3: printf("等腰三角形\n"); break;
14             case 4: printf("直角三角形\n"); break;
15         }
16     }
17     return 0;
18 }
19 
20 int classify_triangle(int a, int b, int c) {
21     if (a + b <= c || a + c <= b || b + c <= a) {
22         return 0; 
23     }
24     if (a == b && b == c) {
25         return 2;
26     }
27     if (a == b || a == c || b == c) {
28         return 3;
29     }
30     if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {
31         return 4;
32     }
33     else 
34     return 1;
35 }
View Code

屏幕截图 2026-04-21 162507

实验五

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

屏幕截图 2026-04-21 163621

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

屏幕截图 2026-04-21 163621

实验六

 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 
15 int gcd(int a, int b, int c) {
16     int min;
17     int i;
18     
19     min = a;
20     if (b < min) min = b;
21     if (c < min) min = c;
22 
23     for (i = min; i >= 1; i--) {
24         if (a % i == 0 && b % i == 0 && c % i == 0) {
25             return i; 
26         }
27     }
28 }
View Code

屏幕截图 2026-04-21 164106

实验七

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

屏幕截图 2026-04-21 165430

 

posted @ 2026-04-21 16:54  阿狸波澜  阅读(8)  评论(0)    收藏  举报