实验三

task1

 1 #include<stdio.h>
 2 char grade(int score)
 3 {
 4     char a;
 5     switch(score/10)
 6     {
 7         case 10:
 8         case 9:a = 'A';break;
 9         case 8:a = 'B';break;
10         case 7:a = 'C';break;
11         case 6:a = 'D';break;
12         default:a = 'E';
13     }
14     return a;
15 }
16 int main()
17 {
18     int score;
19     char g;
20     while(scanf("%d",&score)!=EOF)
21     {
22         g = grade(score);
23         printf("分数是%d,等第是%c\n",score,g);
24     }
25     return 0;
26 }

Q1:按照学生的分数进行分类;整型;字符型
Q2:有问题,会一次性的把下面的分类结果全部输出

task2

 1 #include<stdio.h>
 2 int sum(int n)
 3 {
 4     int a;
 5     while(n!=0)
 6     {
 7         a += n%10;
 8         n /= 10;
 9     }
10     return a;
11 }
12 int main()
13 {
14     int n;
15     int ans;
16     while(scanf("%d",&n)!=EOF)
17     {
18         ans = sum(n);
19         printf("n=%d,ans=%d\n",n,ans);
20     }
21     return 0;
22 }

Q1:输出n的各个数位之和
Q2:能实现同等效果;原来的方法是通过迭代的方法直接取值,新方法是通过递归的方式

task3

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

Q1:求出x的n次方
Q2:是递归,不会公式模型

task4

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

task5

 1 #include<stdio.h>
 2 #include<math.h>
 3 void move(int n,char f,char t)
 4 {
 5     printf("%d: %c --> %c\n",n,f,t);
 6 }
 7 void hanoi(int n,char f,char m,char t)
 8 {
 9     if(n==1)
10     {
11         printf("%d: A --> C\n",n);
12     }
13     else
14     {
15         hanoi(n-1,f,t,m);
16         move(n,f,t);
17         hanoi(n-1,m,f,t);
18     }
19 }
20 
21 int main()
22 {
23     int n;
24     while(scanf("%d",&n)!=EOF)
25     {
26         hanoi(n,'A','B','C');
27         int m;
28         m = pow(2,n)-1;
29         printf("一共移动了%d次。\n",m);
30     }
31     return 0;
32 }

task6

迭代:

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int main() 
 4 {
 5     int n, m;
 6     int ans;
 7     while(scanf("%d%d", &n, &m) != EOF) 
 8     {
 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 {
17     int i,j=1,a,b=1,c,d=1,ans;
18     for(i=1;i<=n;i++)
19     {
20         j *= i;
21     }
22     for(a=1;a<=m;a++)
23     {
24         b *= a;
25     }
26     for(c=1;c<=n-m;c++)
27     {
28         d *= c;
29     }
30     ans = j/(b*d);
31     return ans;
32 }

递归:

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int main() 
 4 {
 5     int n, m;
 6     int ans;
 7     while(scanf("%d%d", &n, &m) != EOF) 
 8     {
 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 {
17     int ans;
18     if(m == 0)
19     {
20         return 1;
21     }
22     else if(n == m)
23     {
24         return 1;
25     }
26     else if(n<m)
27     {
28         return 0;
29     }
30     else
31     {
32         return func(n-1,m)+func(n-1,m-1);
33     }
34 }

task7

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

 

posted @ 2024-10-25 20:19  yueTO  阅读(11)  评论(0编辑  收藏  举报