实验3

实验任务1:

 1 #include<stdio.h>
 2 char score_to_grade(int score);//函数声明
 3 
 4 int main() {
 5     int score;
 6     char grade;
 7 
 8     while (scanf_s("%d", &score) != EOF) {
 9         grade = score_to_grade(score);
10         printf("分数:%d,等级:%c\n\n", score, grade);
11     }
12     return 0;
13 }
14 //函数定义
15 char score_to_grade(int score) {
16     char ans;
17     switch (score / 10) {
18     case 10:
19     case 9:  ans = 'A'; break;
20     case 8:  ans = 'B'; break;
21     case 7:  ans = 'C'; break;
22     case 6:  ans = 'D'; break;
23     default: ans = 'E';
24     }
25 
26     return ans;
27 }

屏幕截图 2026-04-16 212954

问题1:函数score-to-grade的功能根据学生成绩来评判等级,形式参数和返回值类型都是字符型

问题2:不管输入什么成绩最后等级都是E,因为没有break停止信号

实验任务2

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

屏幕截图 2026-04-16 215902

问题1:sum_digits的功能是求各数字之和

问题2:能实现同样的输出,一个是迭代版一个是递归

实验任务3:

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

屏幕截图 2026-04-16 221238

问题1:算x的n次方。问题2:

IMG_0284

实验任务4:

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

屏幕截图 2026-04-16 210041

实验任务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_s("%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     return 0;
13 }
14 int func(int n, int m) {
15     if (m<0||m>n) {
16         return 0;
17     }
18     if (m==0||m==n) {
19         return 1;
20     }
21     return func(n - 1, m) + func(n - 1, m - 1);
22 }

屏幕截图 2026-04-16 230930

实验任务6:

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

屏幕截图 2026-04-18 133236

实验任务7:

 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     scanf_s("%d", &n);
 8     print_charman(n);
 9 
10     return 0;
11 }
12 void print_charman(int n) {
13     for (int i = 0; i < n; i++) {
14         for (int k = 0; k < i; k++) {
15             printf("  ");
16         }
17         for (int j = 0; j < n - i; j++) {
18             printf(" o ");
19         }
20         printf("\n");
21         for (int k = 0; k < i; k++) {
22             printf("  ");
23         }
24         for (int j = 0; j < n - i; j++) {
25             printf("<H>");
26         }
27         printf("\n");
28         for (int k = 0; k < i; k++) {
29             printf("  ");
30         }
31         for (int j = 0; j < n - i; j++) {
32             printf("I I");
33         }
34         printf("\n\n");
35     }
36 }

屏幕截图 2026-04-18 140828

 

posted @ 2026-04-18 14:56  luvfz  阅读(19)  评论(0)    收藏  举报