• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
nuist202513350098
博客园    首页    新随笔    联系   管理    订阅  订阅

实验3

任务1

 

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

问题1:1.分数到等级的转换 2.参与类型:int  返回值类型:char

问题2:case分支缺少break; case 10分支没有任何逻辑 没语句   ''A''是字符串常量 而ans是char类型变量 导致编译报错  

 

 

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

2

问题1:接收一个整数 计算并返回该整数所有各位数字的和

问题2:可以输出 迭代实现从数字的个位开始,由低到高累加 递归实现从数字的最高位开始,由高到低分解   迭代实现用while循环反复执行,直至数字变成0 递归实现缩小问题的规模,直到数字变成个位数

任务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 
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 }

3

问题1:计算整数x的n次幂

问题2:是递归函数数学公式

 

任务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("%d%d%d",&a,&b,&c)==3){
 6     int result = classify_triangle(a,b,c);
 7     switch (result){
 8         case 0 :printf("不能构成三角形\n");break;
 9         case 1 :printf("普通三角形\n");break;
10         case 2 :printf("等边三角形\n");break;
11         case 3 :printf("等腰三角形\n");break;
12         case 4 :printf("直角三角形\n");break;
13     
14     }
15     }
16     return 0;
17 }
18 int classify_triangle(int a, int b, int c){
19     if(a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a){
20         return 0;
21     }
22     if(a==b&&a==c){
23         return 2;
24     }
25     if(a==b||b==c||a==c){
26         return 3;
27     }
28     if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a){
29         return 4;
30     }
31     return 1;
32 }

4

任务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     return 0;
13 }
14 int func(int n,int m){
15     if(m>n)return 0;
16     if(m==0||m==n)return 1;
17 
18     if(m>n-m){
19         m=n-m;
20     }
21 
22     int result=1;
23     for(int i=1;i<=m;i++){
24         result=result*(n-m+i)/i;
25     }
26     return result;
27 }

5

 

任务6

 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("%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_val = a;
19     if (b < min_val) {
20         min_val = b;
21     }
22     if (c < min_val) {
23         min_val = c;
24     }
25 
26     for (int i = min_val; i >= 1; i--) {
27         if (a % i == 0 && b % i == 0 && c % i == 0) {
28             return i; // 
29         }
30     }
31 
32     return 1; 
33 }

6

 

 任务7

 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("%d", &n);
11     print_charman(n);
12 
13     return 0;
14 }
15 
16 void print_charman(int n) {
17     for (int k = 0; k < n; k++) {
18         int num = 2 * (n - k) - 1;
19         int indent = 2 * k;
20         for (int i = 0; i < indent; i++) {
21             printf("  ");
22         }
23         for (int i = 0; i < num; i++) {
24             printf("0   ");
25         }
26         printf("\n");
27         for (int i = 0; i < indent; i++) {
28             printf("  ");
29         }
30         for (int i = 0; i < num; i++) {
31             printf("<H> ");
32         }
33         printf("\n");
34         for (int i = 0; i < indent; i++) {
35             printf("  ");
36         }
37         for (int i = 0; i < num; i++) {
38             printf("I I ");
39         }
40         printf("\n\n");
41     }
42 }

7

7.2

 

posted on 2026-04-20 23:38  宁宁咩  阅读(9)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3