实验三

实验任务一:

问题一:score to grade 的功能是将分数转化为1-10的数,并输出每个数对应的A-E的等级

问题二:改写后的问题1:A-E为字符型应该用单引号括起来,问题2: A-D语句后应该加上break语句,使代码找到运行结果后就跳出switch语句,若没有break语句则还会向下继续运行。 

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

7b7a5811fee5f276d3dae0624a5e37aa

实验任务二:

问题一:sum digits 的功能就是将所输入的数n的各位数加起来 例如n=2049 则ans=2+0+4+9=15
问题二:可以  这两种方法一个是迭代 一个是递归
第一种方法是利用while循环语句,将每位数利用余数和整除单独计算出来并相加
而第二个方法则是利用递归方法,将所输入的n整除并取余数,整除后的部分再次进入函数中进行运算,并将每次求得的余数相加得到结果。
 
 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  }
10  return 0;
11 }
12 int sum_digits(int n){
13  int ans=0;
14  while(n!=0){
15   ans+=n%10;
16   n/=10;
17  }
18  return ans;
19 }

实验任务三:

问题一:power的功能是运算x的n次方
问题二:3f7763071b6fb31f37c6e38f7cab7cee
 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  }
10  return 0;
11 }
12 int power(int x,int n){
13  int t;
14  if(n==0)
15  return 1;
16  else if(n%2)
17  return x*power(x,n-1);
18  else{
19   t=power(x,n-2);
20   return t*t;
21  }
22 }

微信图片_20251026112704_42_2

实验任务四:

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

50f6d1bdb6ce4c87db3a65b1bfa261c0

 实验任务五:

迭代

b6dba8b90eeb14f00c26ecd1a95d7899

 

 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 
13  int func(int n,int m){
14      int c;
15      while(1){
16          if(n<m)
17          return 0;
18          if(m==0)
19          return 1;
20          if(n==m)
21          return 1;
22          if(n>m){
23          long long fenmu = 1;
24          long long fenzi = 1;
25          for(int i=1;i<=m;++i){
26              fenmu*=i;
27              fenzi*=(n-m+i);
28          }
29      
30           return (int (fenzi/fenmu));
31 }
32 }
33 }
34      

递归

 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 
13   int func(int n,int m){
14         if(n<m)
15          return 0;
16          if(m==0)
17          return 1;
18          if(n==m)
19          return 1;
20          if(n>m)
21          return func(n-1,m)+func(n-1,m-1);
22   }

c7d26e8f2b1cdbfeaee871565fa2c2c2

 实验任务六:

4814ba275da3b0e5dc45deb09a574fdd

 

 1  #include <stdio.h>
 2  
 3 int gcd(int a,int b,int c);
 4 
 5 int main() {
 6     int a, b, c;
 7     int ans;
 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  
16 int gcd(int a,int b,int c){
17     int i;
18     if(a<b<c||a<c<b)
19     i=a;
20     if(b<a<c||b<c<a)
21     i=b;
22     if(c<a<b||c<b<a)
23     i=c;
24     for(;i>=1;--i){
25     if(a%i==0&&b%i==0&&c%i==0)
26     return i;
27     }
28 }

实验任务七:

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

c9d38ce6a33644167c188b2d5ead612d

 

 

posted @ 2025-10-26 11:56  陆绎  阅读(11)  评论(0)    收藏  举报