实验三

实验作业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 char score_to_grade(int score){
18     char ans;
19 
20     switch(score/10){
21     case 10:
22     case 9:ans='A';break;
23     case 8:ans='B';break;
24     case 7:ans='C';break;
25     case 6:ans='D';break;
26     default:ans='E';
27     }
28     return ans;
29 
30 }

image

问题:1.将学生分数转换为等级,形参类型为int,返回值类型为char
2.无论输入什么数值都会执行line21-28所有语句但是最后结果显示为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 
15     return 0;
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 }

image

问题:1.计算整数各位数的和
2.能实现同样的输出,一种是迭代方式,一种是递归方式。迭代方式是循环处理,不断累加;递归方式是将问题分解计算。

```

实验作业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 }
14 
15     return 0;
16 }
17 
18 int power(int x,int n){
19     int t=0;
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 }

image

问题:1.计算x的n次幂
2.是,n=0时,返回1;n为奇数时,返回x*power(x,n-1);n为偶数,返回power(x,n/2)*power(x,n/2)

```

实验作业4

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int is_prime(int i){
 5     int ret=1;
 6     int k;
 7     for(k=2;k<i-1;k++){
 8         if(i%k==0){
 9         ret=0;
10         break;
11         }
12     }
13     return ret;
14     }
15 
16 int main(){
17     int count=0;
18     printf("100以内的孪生素数:\n");
19 
20     for(int n=2;n<=98;n++){
21         if(is_prime(n)&&is_prime(n+2)){
22         printf("%d %d\n",n,n+2);
23             count++;
24         }
25     }
26     printf("100以内的孪生素数共有%d个\n",count);
27     system("pause");
28         return 0;
29 }

image

```

实验作业5

迭代

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

 

image

 递归

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

实验作业6

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

 

image

 实验作业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     system("pause");
14     return 0;
15 }
16 void print_charman(int n){
17     
18     for(int i=0;i<n;i++){
19         int c=2*(n-i)-1;
20         int s=i*3;
21         for(int line=0;line<3;line++){
22 
23         for(int k=0;k<s;k++){
24             printf(" ");
25         }
26         for(int j=0;j<c;j++)
27         {
28             switch(line){
29             case 0:printf(" O   ");break;
30             case 1:printf("<H>  ");break;
31             case 2:printf("I I  ");break;
32             
33             }
34         }
35         printf("\n");
36         }
37         printf("\n");
38     }
39 }

 

 

posted @ 2025-10-26 19:22  李佳颖  阅读(5)  评论(0)    收藏  举报