实验3

任务1

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

捕获

 问题1:讲成绩换算成等级,形参类型为整型,返回值类型为字符型

 问题2:所有输出结果都将为E

 

 

 

任务2

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

捕获.PNG2

问题1:算出一个数各位相加的结果

 

问题2:能,一种是迭代的思想,一种是递归的思想

 

任务3

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

捕获.PNG3

问题1:算出一个数的n次方

 

问题2:是屏幕截图 2025-10-25 141826

 

 

任务4

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

屏幕截图 2025-10-25 151310

任务5

迭代

 1 #include <stdio.h>
 2 int func(int n,int m){
 3     if (m==0)
 4     return 1;
 5     else if (m==n)
 6     return 1;
 7     else if (m>n)
 8     return 0;
 9     else {
10     int a=1;
11     int b=1;
12     for(int i=1;i<=m;i++)
13     {a*=n-i+1;
14     b*=m-i+1;    }return a/b;
15     }
16     }
17 int main(){
18     int n,m;
19     int ans;
20     while(scanf("%d%d",&n,&m)!=EOF){
21         ans=func(n,m);
22         printf("n=%d,m=%d,ans=%d\n\n",n,m,ans);
23     }
24     return 0;
25 }

屏幕截图 2025-10-25 154044

递归

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

 

 任务6

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

屏幕截图 2025-10-26 184427

 

 

 

任务7

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void print_charman(int n,int m){
 4     for (int i=m;i>=1;i--)
 5         printf("\t");
 6     for (int i=1;i<=2*n-1;i++)printf(" o\t");printf("\n");
 7     for (int i=m;i>=1;i--)
 8         printf("\t");
 9     for (int i=1;i<=2*n-1;i++)printf("<H>\t");printf("\n");
10     for (int i=m;i>=1;i--)
11         printf("\t");
12     for (int i=1;i<=2*n-1;i++)printf("I I\t");printf("\n");
13     
14 }
15 int main(){
16     int n=0;
17     printf("input n:");
18     scanf("%d",&n);
19 
20     
21     for (int i=n;i>=1;i--){
22         print_charman(i,n-i);
23     }
24     return 0;
25 }

屏幕截图 2025-10-26 200030

屏幕截图 2025-10-26 200231

 

posted @ 2025-10-26 20:08  管yinzheng  阅读(2)  评论(0)    收藏  举报