实验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 
30     return ans;
31 }
View Code

1

问题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         ans += n % 10;
23         n /= 10;
24     }
25 
26     return ans;
27 }
View Code

2

问题1:把数字n的每个位数上的数字相加
问题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     return 0;
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 }
View Code

3

问题1:计算x的n次方
问题2:IMG_20251024_215458

 

实验任务4

 1 #include <stdio.h>
 2 int is_prime(int n);
 3 int main()
 4 {
 5     int n,s=0;
 6     for(n=1;n<=98;n=n+1)
 7         if(is_prime(n)==1&&is_prime(n+2)==1)
 8         {
 9             printf("%d  %d\n",n,n+2);
10             s=s+1;
11         }
12     printf("一共有孪生素数%d对",s);
13     return 0;
14 }
15 int is_prime(int n)
16 {
17    int i,j,s=2;
18     j=n;
19     for(i=2;i<j;++i)
20     {
21         if(j%i==0)
22             break;
23         s=s+1;
24     }
25    
26     if(s==j)return 1;
27     else return 0;
28     return 0;
29 }
View Code

4

 

实验任务5

5.1  迭代

 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         
13     return 0;
14 }
15 
16 int func(int n, int m)
17 {
18     int i,j,s,I=1,J=1,S=1,k;
19     double c;
20     i=n;j=m,s=n-m;
21     k=1;
22     for(;k<=i;k=k+1)
23     {
24         I=I*k;
25     }
26     k=1;
27     for(;k<=j;k=k+1)
28     {
29         J=J*k;
30     }
31     k=1;
32     for(;k<=s;k=k+1)
33     {
34         S=S*k;
35     }
36     c=I/J/S;
37     
38     return c;
39 }
View Code

5.1

5.2 递归

 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         
13     return 0;
14 }
15 
16 int func(int n, int m)
17 {
18     if(m>n)
19         return 0;
20     else if(m==0)
21         return 1;
22     else
23         return func(n-1,m)+func(n-1,m-1);
24 }
25 //diedai
View Code

5.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 
13     return 0;
14 }
15 int gcd(int a,int b,int c)
16 {
17     int i=1,x,y,z,min,gcd=1;
18     x=a;y=b;z=c;
19     if(x<y&&x<z)min=x;
20     if(y<x&&y<z)min=y;
21     if(z<b&&z<x)min=z;
22     for(;i<=min;i=i+1)
23     {
24         if(x%i==0&&y%i==0&&z%i==0)
25         {
26             if(gcd<i)gcd=i;
27         }
28     }
29     
30     return gcd;
31 }
View Code

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 {
18     int i, j, k;
19     
20     for(i = 2*n-1; i >= 1; i = i-2)
21     {
22         int spaces = (2*n-1 - i) / 2;
23 
24         for(j = 0; j < spaces; j++)
25         {
26             printf("\t");
27         }
28         for(k = 0; k < i; k++)
29         {
30             printf(" O \t");
31         }
32         printf("\n");
33         
34         ///////
35         for(j = 0; j < spaces; j++)
36         {
37             printf("\t");
38         }
39         for(k = 0; k < i; k++)
40         { 
41             printf("<H>\t");
42         }
43         printf("\n");
44         
45         ///////
46         for(j = 0; j < spaces; j++)
47         {
48             printf("\t");
49         }
50         for(k = 0; k < i; k++)
51         {
52             printf("I I\t");
53         }
54         printf("\n\n");
55     }
56 }
View Code

7.1

7.2

 

 

posted @ 2025-10-26 15:59  a杠兄  阅读(8)  评论(1)    收藏  举报