实验三

任务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    return 0;
14 }
15 
16 // 函数定义
17 char score_to_grade(int score) {
18      char ans;
19      switch(score/10) {
20      case 10:
21      case 9:   ans = 'A'; break;
22      case 8:   ans = 'B'; break;
23      case 7:   ans = 'C'; break;
24      case 6:   ans = 'D'; break;
25      default:  ans = 'E';
26      }
27  
28      return ans;
29 }

3708103-20251030183025232-641921896

问题1:接收得分,返还等第

问题2:无break将继续,结果唯一为E;双引号导致数据类型错误

任务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      {
23                  ans += n % 10;
24         n /= 10;
25      }
26  
27      return ans;
28  }

3708103-20251030193607152-135967083

任务3:

 1 #include<stdio_h>
 2 
 3 int power(int x, int n); // 函数声明
 4 int main() 
 5 {
 6 int x, n;
 7 int ans;
 8 
 9 while(printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) 
10      {
11      ans = power(x, n); // 函数调用
12      printf("n = %d, ans = %d\n\n", n, ans);
13      }
14 return 0;
15 }
16 // 函数定义
17 int power(int x, int n) {
18 int t;
19 
20 if(n == 0)
21      return 1;
22 else if(n % 2)
23      return x * power(x, n-1);
24 else 
25      {
26      t = power(x, n/2);
27      return t*t;
28      }
29 }

3713324-20251030191027266-324599727

任务4:

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int is_Prime(int n)
 5 {
 6     for(int i=2;i<=sqrt(n);i++) 
 7     {
 8         if(n%i==0) return 0;
 9     }
10     return 1;
11 }
12  
13 int main()
14 {
15     int total=0;
16     for(int n=2;n<=100;n++)
17         if(is_Prime(n) + is_Prime(n+2) == 2)
18         {
19             printf("%d %d\n", n, n+2);
20             total += 1;
21         }
22     printf("100以内的孪生素数共有%d个.", total);
23 }

3713324-20251030191904389-558686900

任务5:

 1 #include <stdio.h>
 2 
 3 //迭代
 4 
 5 int func(int n, int m);  
 6 
 7 int main() 
 8 {
 9     int n, m;
10     int ans;
11 
12     while(scanf("%d%d", &n, &m) != EOF) 
13     {
14         ans = func(n, m);   
15         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
16     }
17         
18     return 0;
19 }
20 
21 int func(int n,int m)
22 {
23     int numerator=1,denominator_1=1,denominator_2=1;
24     int x,y,z;
25     int ans=1;
26     
27     for(x=1;x<=n;++x)
28     {
29         numerator*=x;
30     }
31     for(y=1;y<=m;++y)
32     {
33         denominator_1*=y;
34     }
35     for(z=1;z<=(n-m);++z)
36     {
37         denominator_2*=z;
38     }
39     ans=numerator/(denominator_1*denominator_2);
40     
41     return ans;
42 }
 1 #include <stdio.h>
 2 
 3 //递归
 4 
 5 int func(int n, int m);   
 6 
 7 int main() 
 8 {
 9     int n, m;
10     int ans;
11 
12     while(scanf("%d%d", &n, &m) != EOF) 
13     {
14         ans = func(n, m);  
15         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
16     }
17         
18     return 0;
19 }
20 
21 int func(int n,int m)
22 {
23     if(n<m)
24     {
25         return 0;
26     }
27     else if(m==0||m==n) 
28     {
29         return 1;
30     }
31     else
32     return func(n-1,m)+func(n-1,m-1);
33 }

3713324-20251030192416158-2056119884

任务6:

#include <stdio.h>

int gcd(int a,int b,int c);

int main()
{
    int a, b, c;
    int ans;

    while(scanf("%d%d%d", &a, &b, &c) != EOF) 
    {
        ans = gcd(a, b, c);   
        printf("最大公约数: %d\n\n", ans);
    }

    return 0;
}

int gcd(int a,int b,int c)
{
    int n;
    n=a;
    if(n>b)
    {
        n=b;
    }
    if(n>c)
    {
        n=c;
    }
    int i;
    for(i=n;i>=1;--i)
    {
        if(a%i==0&&b%i==0&&c%i==0)
        {
        return i;    
        }
    }
}

3713324-20251030192736676-1236845608

任务7:

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

3713324-20251030192925546-237603724

 

posted @ 2025-11-03 13:36  nanxinyin  阅读(3)  评论(1)    收藏  举报