实验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 return 0;
11 }
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

(1)功能:将输入的分数转化为等级

(2)形参类型:整数类型

(3)返回值类型:字符串类型

问题2

会执行所有分支的代码,输出的等级不正确

实验任务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     }
10     return 0;
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 }

运行截图

捕获1

 问题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     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 }

运行截图

屏幕截图 2025-10-28 110547

问题1

运算x的n次方

问题2

IMG_8071

实验任务4

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

运行截图

屏幕截图 2025-10-28 112218

实验任务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         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,k,sum_1=1;
19     for (i = 1; i <= n; i++)
20     {
21         sum_1 *= i;
22     }
23     for (j= 1; j <= m; j++)
24     {
25         sum_1 /= j;
26     }
27     for (k= 1; k <= (n-m); k++)
28     {
29         sum_1 /= k;
30     }
31     return sum_1;
32 }

运行截图

屏幕截图 2025-10-28 112630

递归

 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(n<m)
15           return 0;
16           if(m==0)
17           return 1;
18           if(n==m)
19           return 1;
20           if(n>m)
21           return func(n-1,m)+func(n-1,m-1);
22 }

运行截图

屏幕截图 2025-10-28 113606

实验任务6

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

运行截图

屏幕截图 2025-10-28 114112

实验任务7

 1 #include<stdio.h>
 2 void print_charman(int n);
 3 int main() {
 4     int n;
 5     printf("Enter n:");
 6     scanf("%d", &n);
 7     print_charman(n);
 8     return 0;
 9 }
10 void print_charman(int n){
11     int i, j, k;
12     for (i = 1; i <= n; ++i) {
13         for (j = 0; j < i; j++)
14         printf("\t");
15         for (k = 2 * n - 2 * i + 1; k >0; k--) {
16         printf(" \t O ");
17 
18         }printf("\n");
19         for (j = 0; j < i; j++)
20         printf("\t");
21         for (k = 2 * n - 2 * i + 1; k > 0; k--) {
22         printf("\t<H>");
23 
24         } printf("\n");
25         for (j = 0; j < i; j++)
26         printf("\t");
27         for (k = 2 * n - 2 * i + 1; k > 0; k--) {
28         printf("\tI I");
29 
30         }
31         printf("\n");
32     }
33 
34 }

运行截图

屏幕截图 2025-10-28 123803

屏幕截图 2025-10-28 123851

 

posted @ 2025-10-28 12:41  沈春玲  阅读(3)  评论(0)    收藏  举报