实验3

实验任务1

问题1:判断分数对应的等级

问题2:第22到26行代码失效,无论输入多少分,只输出E

实验任务2

问题1:将输入数字的各位数字相加求和

问题2:可以实现同样的输出。第二种算法使用迭代,将n除以10的余数相加

实验任务3

问题1:计算x的n次方

问题2:是递归函数

image

 实验任务4

源代码

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

实验结果

image

 实验任务5

实现方式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 int func(int n, int m) {
13     if(n<m||n<0||m<0) {return 0;}
14     switch (m) {
15         case 1:return n;
16         case 0:return 1;
17     }
18     return func(n-1,m)+func(n-1,m-1);
19 }
View Code

实验结果

屏幕截图 2025-10-30 154131

实现方式2:递归方式

源代码

 1 #include <stdio.h>
 2 int func(int n, int m);   // 函数声明
 3 
 4 int main() {
 5     int n, m;
 6     int ans;
 7     while(scanf("%d%d", &n, &m) != EOF) {
 8         ans = func(n, m);   // 函数调用
 9         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
10     }
11     return 0;
12 }
13 int func(int n,int m) {
14     int ans;
15     if(n<m||n<0||m<0) {return 0;}
16     switch (m) {
17         case 1:return n;
18         case 0:return 1;
19     }
20     ans=func(n-1, m-1)+func(n-1,m);
21     return ans;
22 }
View Code

屏幕截图 2025-10-30 154131

实验任务6

源代码

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

屏幕截图 2025-10-30 163547

实验任务7

源代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void print_charman(int n);
 4 void syc(int n,int m);
 5 int main() {
 6     int n;
 7     printf("Enter n: ");
 8     scanf("%d", &n);
 9     print_charman(n); // 函数调用
10 
11     return 0;
12 }
13 void syc(int n,int m) {
14     for (int i=0; i<m; i++) {
15         printf("   \t");
16     }
17     for (int i=0; i<n; i++) {
18         printf(" o \t");
19     }
20     printf("\n");
21     for (int i=0; i<m; i++) {
22         printf("   \t");
23     }
24     for (int i=0; i<n; i++) {
25         printf("<H>\t");
26     }
27     printf("\n");
28     for (int i=0; i<m; i++) {
29         printf("   \t");
30     }
31     for (int i=0; i<n; i++) {
32         printf("I I\t");
33     }
34     printf("\n");
35 }
36 void print_charman(int n) {
37     for (int i=0; i<n; i++) {
38         syc(2*n-i*2-1,i);
39         printf("\n");
40     }
41 }
View Code

实验结果

image

 

image

 

posted @ 2025-10-30 17:04  尚逸辰  阅读(8)  评论(0)    收藏  举报