实验三

实验任务1

问题1:将输入的分数整除10,再通过switch函数输出相应的等级,并返回到ans中。形参类型是整型,返回值是字符串。

问题2:由于缺少break,当其中一行满足时,后面的代实验任务2

实验任务2

问题1:将输入的整数n的每一位上的数字相加,并返回到ans中。

问题2:可以。第一种是将整数n先对10取余,,再将n整除10后赋值给n,再将赋值后的n继续取余并将余数相加赋值给ans,直到n整除10后为0。第二种是先判断n是否小于10,如果小于10,则保持n不变,直接将n赋值给ans,否则,将n对10取余,并将n整除10,然后再次判断整除10后的n是否小于10,再重复进行以上操作,并将余数相加,直到n小于10,再将相加后的结果返还给ans。

实验任务3

问题1:计算x的n次方

问题2:是。递归模式:分治。

ac71392781219b487d503783e681d12f

 

实验任务4

 1 #include <stdio.h>
 2 
 3 int is_prime(int n);
 4 
 5  int main(){
 6      int num, n, i;
 7      printf("100以内的孪生素数:\n");
 8      for(int j=1;j<=98;++j){
 9          if(is_prime(j)&&is_prime(j+2)){
10              printf("%d, %d\n",j,j+2);
11              ++num;
12          }
13      }
14      
15      printf("100以内的孪生素数共有%d个", num);
16      
17      return 0;
18  } 
19  
20  int is_prime(int n){
21      int num,i=2;
22      while (i<n){
23          if(n % i != 0)
24              ++i;
25          else{
26              if(i == n)
27                  return 1;
28              else if(i!=n)
29                  return 0;
30          }
31      }
32      while(i>=n){
33          if(i == n)
34              return 1;
35          else
36              return 0;
37      }
38 }
View Code

 

 屏幕截图 2025-10-25 184131

实验任务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     return 0;
13 }
14 
15 int func(int n, int m){
16     int ans, num1=1, num2=1,num3=1;
17     if(n>= m){
18         for(int i=1;i<=n;++i)
19             num1 = num1*i; 
20         for(int j=1; j<=m; ++j)
21             num2 = num2*j;
22         for(int x=1; x<=(n-m);++x)
23             num3 = num3*x;
24         ans = num1/(num2*num3);
25         return ans;
26     }
27     else
28         return 0;
29             
30 }
迭代
 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     return 0;
13 }
14 
15 int func(int n, int m){
16     int ans;
17     if(n == m||m==0)
18         ans = 1;
19     else if(n<m)            
20         ans = 0 ;        
21     else
22         ans = func(n-1, m) + func(n-1, m-1);
23     return ans;
24             
25 }
递归

屏幕截图 2025-10-26 170827

实验任务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 ans;
17     while (a%b != 0){
18         ans = a%b;
19         a = b;
20         b = ans;
21     }
22     while(b%c != 0){
23         ans = b%c;
24         b = c;
25         c = ans;
26     }
27     return ans;
28 }
29     
最大公约数

屏幕截图 2025-10-28 153855

实验任务7

 屏幕截图 2025-10-28 173601

屏幕截图 2025-10-28 173627

 

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

 

posted @ 2025-10-28 17:45  aiuydihua  阅读(11)  评论(1)    收藏  举报