实验3

试验任务1

代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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     system("pause");
15     return 0;
16 }
17 char score_to_grade(int score)
18 {
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 }

截图

屏幕截图 2026-04-16 200438

问题:

1.将分数转换成对应的等级,形参类型是整型,返回值是字符型;

2.运行switch语句时,每次输出等级都为E,不会在对应的等级停止。

 

 

试验任务2

代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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     system("pause");
15     return 0;
16 }
17 
18 int sum_digits(int n)
19 {
20     int ans = 0;
21 
22         while(n != 0){
23             ans += n%10;
24             n /= 10;
25         }
26 
27         return ans;
28 }

截图

屏幕截图 2026-04-16 203349

问题:

1.计算一个整数所有数字之和;

2.能实现同样的输出,原版是从个位数一步一步做加法,而改编版是将一个数进行拆分加起来。

 

 

试验任务3

代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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     system("pause");
15     return 0;
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 }

截图

屏幕截图 2026-04-16 210356

问题:

1.实现x的n次幂;

2.是,数学公式模型如下:屏幕截图 2026-04-16 211151

 

 

试验任务4

代码

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

截图 

屏幕截图 2026-04-16 192316

 

 

试验任务5

代码1

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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     system("pause");
15     return 0;
16 }
17 
18 int func(int n,int m)
19 {
20     int ans;
21     int i;
22     if(m<0||m>n)
23         return 0;
24     if(m == 0||m == n)
25         return 1;
26     if(m>n-m)
27         m = n-m;
28 
29     ans = 1;
30     for(i=1;i<=m;i++){
31         ans = ans*(n-m+i)/i;
32     }
33     return ans;
34 }

截图1

屏幕截图 2026-04-18 222847

 

代码2

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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     system("pause");
15     return 0;
16 }
17 
18 int func(int n,int m)
19 {
20     if(m<0||m>n)
21         return 0;
22     if(m == 0||m == n)
23         return 1;
24     return func(n-1,m)+func(n-1,m-1);
25 }

截图2

屏幕截图 2026-04-18 223734

 

 

 

试验任务6

代码

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

截图

屏幕截图 2026-04-18 230833

 

 

试验任务7

代码

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

 

截图

屏幕截图 2026-04-19 171905

屏幕截图 2026-04-19 172049

 

posted @ 2026-04-19 17:26  Hhhm00  阅读(4)  评论(0)    收藏  举报