实验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

运行结果截图

屏幕截图 2025-10-26 185432

问题1:

函数的功能为根据输入的整形分数转换成相应的等级。

形参类型为int

返回值类型为char

问题2:

1.字符类型不匹配

2.case分支无break,将会继续向下执行,结果均为default

3.default分支为字符常量,case分支为字符串常量

实验任务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

运行结果截图:

屏幕截图 2025-10-26 190457

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

运行结果截图:

屏幕截图 2025-10-26 191352

问题1:

函数功能为计算x的n次幂

问题2:

是的。

数学公式模型:

IMG_20251026_191858

实验任务4:

源代码:

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

运行结果截图:

屏幕截图 2025-10-26 195524

实验任务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 int func(int n, int m){int x=1,y=1,z=1,i;
16 for(i=1;i<=n;++i)x*=i;
17 for(i=1;i<=m;++i)y*=i;
18 for(i=1;i<=n-m;++i)z*=i;
19 return x/(y*z);}
View Code

递归法:

 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 int func(int n, int m){if(m<0||m>n)return 0;
16 if(m==0||m==n)return 1;
17     return func(n-1,m)+func(n-1,m-1);}
View Code

运行结果截图:

屏幕截图 2025-10-26 200840

实验任务6:

源代码:

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

运行结果截图:

屏幕截图 2025-10-26 204058

实验任务7:

源代码:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void print_charman(int n);
 4 
 5 int main() {
 6     int n;
 7 
 8     printf("Enter n: ");
 9     scanf("%d", &n);
10     print_charman(n); // 函数调用
11       system("pause");
12     return 0;
13 }
14 void print_charman(int n){int i,k,j;
15 for(i=0;i<n;++i){
16     for(j=0;j<i;++j)printf(" \t");
17     for(k=0;k<n*2-1-2*i;++k){printf(" O\t");}
18     printf("\n");
19     for(j=0;j<i;++j)printf(" \t");
20     for(k=0;k<n*2-1-2*i;++k){printf("<H>\t");}
21     printf("\n");
22     for(j=0;j<i;++j)printf(" \t");
23     for(k=0;k<n*2-1-2*i;++k){printf("I I\t");}
24     printf("\n");}}
View Code

运行结果截图:

屏幕截图 2025-10-26 215316

屏幕截图 2025-10-26 215337

 

posted @ 2025-10-26 22:02  每户下山流量  阅读(0)  评论(0)    收藏  举报