实验三

实验一:

  1. 将百分制分数转换成等级,形参类型是int,返回值类型是char。
  2. 缺少break语句,导致结果最后都是E;ABCD都用双引号而不是单引号;

实验二:

  1. 计算数字n的每一位数字的和。
  2. 可以。一个是循环,从低位到高位,一个是递归,从高位到低位。

     

     

实验三:

  1. 计算x的n次幂。
  2. 是递归函数。若 n 为奇数:power(x,n)=x×power(x,n−1)  若 n为偶数:power(x,n)=(power(x,n/2))的平方。公式如图0df5512c6e6441293f6aafa94a21525e

实验四:

 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     int type;
 8     
 9     while(scanf_s("%d%d%d", &a, &b, &c) != EOF) {
10         type = classify_triangle(a, b, c);
11         
12         switch(type) {
13             case 0: printf("不能构成三角形\n"); break;
14             case 1: printf("普通三角形\n"); break;
15             case 2: printf("等边三角形\n"); break;
16             case 3: printf("等腰三角形\n"); break;
17             case 4: printf("直角三角形\n"); break;
18             default: printf("未知类型\n");
19         }
20     }
21     
22     return 0;
23 }
24 
25 int classify_triangle(int a, int b, int c) {
26     
27     int d;
28     if(a > b) { d = a; a = b; b = d; }
29     if(a > c) { d = a; a = c; c = d; }
30     if(b > c) { d = b; b = c; c = d; }
31 
32     if(a + b <= c) {
33         return 0; 
34     }
35     
36     
37     if(a == b && b == c) {
38         return 2; 
39     }
40     
41    
42     if(a == b || b == c || a == c) {
43         if(a*a + b*b == c*c) {
44             return 4; 
45         }
46         return 3; 
47     }
48     
49     if(a*a + b*b == c*c) {
50         return 4;
51     }
52     
53     return 1;
54 }
View Code

实验五:

 1 #include <stdio.h>
 2 
 3 int func(int n, int m);
 4 
 5 int main() {
 6     int n, m;
 7     int ans;
 8     
 9     while(scanf_s("%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     
14     return 0;
15 }
16 
17 int func(int n, int m) {
18     int i;
19    int a = 1, b = 1,c;
20     
21     if(m > n) return 0;
22     if(m == 0 || m == n) return 1;
23     
24     if(m > n - m) {
25         m = n - m;
26     }
27     
28     for(i = 0; i < m; i++) {
29         a *= (n - i);
30         b *= (i + 1);
31     }
32     
33     c = a / b;
34     return c;
35 }
View Code
 1 #include <stdio.h>
 2 
 3 int func(int n, int m); 
 4 
 5 int main() {
 6     int n, m;
 7     int ans;
 8     
 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     
14     return 0;
15 }
16 
17 int func(int n, int m) {
18     if(m > n) return 0;
19     if(m == 0 || m == n) return 1;
20    
21     return func(n-1, m-1) + func(n-1, m);
22 }
View Code

实验六:

 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     
 9     while(scanf_s("%d%d%d", &a, &b, &c) != EOF) {
10         ans = gcd(a, b, c); 
11         printf("最大公约数: %d\n\n", ans);
12     }
13     
14     return 0;
15 }
16 
17 int gcd(int a, int b, int c) {
18     int min;
19     int i;
20     
21     min = a;
22     if(b < min) min = b;
23     if(c < min) min = c;
24     
25     for(i = min; i >= 1; i--) {
26         if(a % i == 0 && b % i == 0 && c % i == 0) {
27             return i;
28         }
29     }
30     
31 }
View Code

实验七:

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

 

posted @ 2026-04-18 17:47  郑云翔  阅读(15)  评论(0)    收藏  举报