实验3

实验任务1

 1 #include<stdio.h>
 2 char score_to_grade(int score);
 3 
 4 int main()
 5 {
 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 char score_to_grade(int score){
17     char ans;
18     switch (score/10){
19         case 10: 
20         case 9: ans='A';break;
21         case 8: ans='B';break;
22         case 7: ans='C';break;
23         case 6: ans='D';break;
24         default: ans='E';
25     }
26     return ans;
27 }

截图

2025.10.24 task1

问题1:函数的功能是将百分制分数转换为等级制成绩;形参类型:int score;返回值类型:char;

问题2:修改后"A"不是char类型变量会导致编译错误且不加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     return 0;
14 }
15 
16 int sum_digits(int n){
17     int ans=0;
18     
19     while(n!=0){
20         ans+=n%10;
21         n/=10;
22     }
23     return ans;
24 }

截图

2025.10.24 task2

问题1:函数功能:计算一个整数的各位数字之和;

问题2:两种算法均能实现。第一种运用了迭代的运算方式,第二种运用了递归的运算方式,递归直接运用公式更简洁明了。

实验任务3

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

截图

2025.10.24 task3

问题1:函数功能:计算整数x的n次幂;

问题2:是递归函数。

2025.10.24 task3模型

实验任务4

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

截图

2025.10.24 task4

实验任务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     int ans = func(n, m);
10     printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);}
11     
12     return 0;
13 }
14 
15 int func(int n, int m) {
16     
17     if (m < 0 || m > n) return 0;
18     if (m == 0 || m == n) return 1;
19     
20     if (m > n - m) {
21         m = n - m;
22     }
23     
24     int ans = 1;
25     for (int i = 1; i <= m; i++) {
26         ans = ans * (n - m + i) / i;
27     }
28     
29     return ans;
30 }

截图

2025.10.24 task5(1)

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

截图

2025.10.24 task5(2)

实验任务6

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

截图

2025.10.24 task6

实验任务7

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

截图

2025.10.24 task7(1)

2025.10.24 task7(2)

 

posted @ 2025-10-27 22:57  Hoon0626  阅读(5)  评论(0)    收藏  举报