首页 > 其他分享 >实验3

实验3

时间:2024-10-27 16:03:13浏览次数:1  
标签:return int printf char 实验 ans include

任务1

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

 

问题1:函数score_to_grade的功能是根据不同的分数段将分数转化为评分,形参类型为整型,返回值类型为字符型

问题2:有问题,如果没有break语句无论哪种情况都会一直执行到Switch结构结束,均输出E

 

任务2

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<time.h>
 4 #include<stdlib.h>
 5 
 6 
 7 int sum_digits(int n);
 8 
 9 int main()
10 {    
11     int n;
12     int ans;
13     
14     while(printf("Enter n:"),scanf("%d",&n)!=EOF)
15     {
16         ans=sum_digits(n);
17         printf("n=%d,ans=%d\n\n",n,ans);
18         
19     }
20     
21       return 0;
22 }
23     
24  int sum_digits(int n)
25  {
26      int ans=0;
27      while(n!=0)
28      {
29          ans+=n%10;
30          n/=10;
31      }
32      return ans;
33  }
34      

问题1:函数sum_digits的功能是将一个数每个位数上的数相加并输出

问题2:能实现相同的效果

前者是迭代的思维,后者是递归的思维

任务3

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<time.h>
 4 #include<stdlib.h>
 5 
 6 
 7 int power(int x,int n);
 8 
 9 
10 int main()
11 {    
12     int x,n;
13     int ans;
14     
15     while(printf("Enter x and n:"),scanf("%d%d",&x,&n)!=EOF)
16     {
17         ans=power(x,n);
18         printf("n=%d,ans=%d\n\n",n,ans);
19         
20     }
21       return 0;
22 }
23     int power(int x,int n)
24     {
25         int t;
26         if(n==0)
27         return 1;
28         else if(n%2)
29         return x*power(x,n-1);
30         else{
31             t=power(x,n/2);
32             return t*t;
33         }
34     }

问题1:power函数的作用是运算x的n次方的值并输出

问题2:power函数是递归函数,数学模型:

当n==0,任何数的 0 次幂都为 1,所以函数直接返回 1;

当n为奇数,x^n==x*x^(n-1)

当n为偶数,x^n=(x^(n/2))^2

 

 任务4

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

 

 任务5

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<time.h>
 4 #include<stdlib.h>
 5 unsigned int move_count = 0; 
 6 void hanoi(unsigned int n, char from, char temp, char to);
 7 void moveplate(unsigned int n, char from, char to);
 8 int main()
 9 {  
10  unsigned int n; 
11 while(scanf("%u",&n)!=EOF)
12 {
13     move_count = 0; 
14      hanoi(n, 'A','B','C'); 
15      printf("一共移动了: %u次\n", move_count); 
16 getchar();
17 }
18 
19  return 0; 
20 }
21 
22 
23 void hanoi(unsigned int n, char from, char temp, char to) 
24 {
25 
26 if(n==1) 
27 moveplate(n, from, to); 
28 else 
29 {
30 hanoi(n-1,from, to, temp); 
31  moveplate(n, from, to); 
32 hanoi(n-1,temp,from, to); 
33 } 
34 }
35 
36 
37 void moveplate(unsigned int n, char from, char to) 
38 { 
39     printf(" %u:%c-->%c\n", n, from, to); 
40     
41     move_count++; 
42 }
43 
44 
45  
46 
47     
48   
49      
50  

任务6

递归实现:

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<time.h>
 4 #include<stdlib.h>
 5 int func(int n,int m);
 6 
 7 int main()
 8 {
 9     int n,m;
10     int ans;
11     while(scanf("%d%d",&n,&m)!=EOF)
12     {
13         ans=func(n,m);
14         printf("n=%d,m=%d,ans=%d\n\n",n,m,ans);
15         
16     }
17     
18     return 0;
19 }
20 
21 
22 int func(int n,int m)
23 {
24     25     if(m==0||m==n)
26     return 1;
27     else if(n<m)
28     return 0;
29     else 
30     return func( n-1, m)+func( n-1,m-1);
31      
32     
33     
34 }

 

 

迭代实现:

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

 

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

 

 

 

标签:return,int,printf,char,实验,ans,include
From: https://www.cnblogs.com/luozeyu/p/18497904

相关文章

  • 实验3
    任务11#include<stdio.h>23charscore_to_grade(intscore);45intmain(){6intscore;7chargrade;89while(scanf("%d",&score)!=EOF){10grade=score_to_grade(score);11printf(&......
  • 实验3
    任务1原代码1#include<stdio.h>23charscore_to_grade(intscore);45intmain(){6intscore;7chargrade;89while(scanf("%d",&score)!=EOF){10grade=score_to_grade(score);11printf("......
  • 实验三
    任务1#include<stdio.h>charscore_to_grade(intscore);//函数声明intmain(){intscore;chargrade;while(scanf("%d",&score)!=EOF){grade=score_to_grade(score);//函数调用printf("分数:%d,等级:%c\n\n",score,grade);}re......
  • 实验2 类和对象_基础编程1
    task1代码:t.h1#pragmaonce23#include<string>45//类T:声明6classT{7//对象属性、方法8public:9T(intx=0,inty=0);//普通构造函数10T(constT&t);//复制构造函数11T(T&&t);//移动构造函数12~......
  • 实验三
    任务一源代码:#include<stdio.h>charscore_to_grade(intscore);intmain(){intscore;chargarde;while(scanf("%d",&score)!=EOF){garde=score_to_grade(score);printf("分数:%d,等级:%c\n\n",sc......
  • 【机器学习】任务九:卷积神经网络(基于 Cifar-10 数据集的彩色图像识别分类、基于 CNN
    1.卷积神经网络        卷积神经网络(ConvolutionalNeuralNetwork,CNN)是一种专门用于处理数据网格结构(如图像、视频等)的深度学习模型,在计算机视觉任务中被广泛应用,如图像分类、目标检测、图像分割等。以下是卷积神经网络的详细介绍:1.1 卷积神经网络(CNN)结构及......
  • 1024程序员节快乐——华为静态路由实现路由负载分担实验案例
    目录静态路由实现路由负载分担静态路由简介配置注意事项组网需求配置思路操作步骤配置文件静态路由实现路由负载分担实验组网图形图1 配置静态路由实现路由负载分担组网图 静态路由简介配置注意事项组网需求配置思路操作步骤配置文件静态路由简介静态路......
  • 基于微信小程序的实验室管理系统的设计与实现-计算机毕业设计源码+LW文档
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了实验室管理微信小程序的开发全过程。通过分析实验室管理微信小程序管理的不足,创建了一个计算机管理实验室管理微信小程序的方案。文章介绍了实验室管理微信小程序的系统分析......
  • 实验2 类和对象——基础编程1
    一、实验目的 加深对类,对象的理解,能够解释类的封装,类的接口会使用C++语法规则正确定义,实现,测试类,会使用类创建对象,并基于对象编程针对具体问题场景,练习运用面向对象思维进行设计,合理利用C++语言特性(访问权限控制,static,friend,const),在数据共享和保护之间达到平衡会用多文件......
  • 实验3
    实验任务1:源代码:1#include<stdio.h>23charscore_to_grade(intscore);45intmain(){6intscore;7chargrade;89while(scanf("%d",&score)!=EOF){10grade=score_to_grade(score);11p......