实验3

任务1

源代码:

试验任务1

图片1

问题1:根据输入的分数,反馈等级,整数类型,字符类型

问题2:1.在 3 4 5 6行后加break;

             2.3 4 5 6行的双引号改为单引号

任务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     }return 0;
10 }
11 int sum_digits(int n){
12     int ans=0;
13     while(n!=0){
14         ans+=n%10;
15         n/=10;
16     }return ans;
17 }
任务2

图片2

问题1:计算数字n各位上数字的和

问题2:能

迭代法:通过循环不断对n取余并保留,再计算n/10得到新的n;直到n为个位数;再将取余的数相加

递归法:若n<10,则直接返回,若n>=10则将n/10返还给函数并加上n取余;

 

实验任务3

源代码

 1 #include<stdio.h>
 2 int power(int x,int n);
 3 int main(){
 4     int x,n;
 5     int ans;
 6     while(printf("Enter x and n:"),scanf("%d%d",&x,&n)!=EOF){
 7         ans=power(x,n);
 8         printf("n=%d,ans=%d\n\n",n,ans);
 9     }return 0;
10 }
11 int power(int x,int n){
12     int t;
13     if(n==0)
14     return 1;
15     else if(n%2)
16     return x*power(x,n-1);
17     else{
18         t=power(x,n/2);
19         return t*t;
20     }
21 }
View Code

图片3

问题1:计算x的n次方

问题2:

 IMG_0028

实验任务4:

源代码

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

图片4

实验任务5

源代码

 1 #include<stdio.h> 
 2 int func(int n, int m);
 3 int main() {
 4    int n, m;
 5     int ans;
 6    while (scanf_s("%d%d", &n, &m) !=EOF) {
 7               ans =    func(n, m);
 8             printf("n=%d,m=%d,ans=%d\n\n", n, m, ans);
 9     }return 0;
10     
11 }
12  int func(int n, int m) {   int a = n - m + 1;
13        int    ans;
14    int fenzi = 1; int fenmu = 1    ;
15      while (n >=a) {
16                fenzi = fenzi *    n;
17               n--;
18     
19     }
20      while (m > 0) {
21          fenmu = fenmu * m;       
22          m--;
23 
24      }
25            ans = fenzi /fenmu;
26         return ans;
27     
28 }
29     
View Code

源代码

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

图片屏幕截图 2025-10-24 210740

实验任务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_s("%d%d%d", &a, &b, &c) != EOF) {
 7         ans = gcd(a, b, c);
 8         printf("最大公约数:%d\n\n", ans);
 9     }return 0;
10 }
11 int gcd(int a, int b, int c) {
12     int min;
13     if (c<a&&c<b)
14         min = c;
15     if (b < a && b < c)
16         min = b;
17     if (a < b && a < c)
18         min = a;
19     int ans = min;
20     while (ans >= 1) {
21         if (a % ans == 0 && b % ans == 0 && c % ans == 0)
22             return ans;
23         ans--;
24     }
25     return ans;
26 }
View Code

图片屏幕截图 2025-10-24 212150

实验任务7

源代码

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

图片屏幕截图 2025-10-29 125650

 

 屏幕截图 2025-10-29 125701

 

posted @ 2025-10-29 13:14  空元  阅读(9)  评论(1)    收藏  举报