首页 > 其他分享 >实验3

实验3

时间:2024-10-30 15:31:49浏览次数:4  
标签:10 return int ans score 实验 printf

task1

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

Q1:score_to_grade是一个自己定义的函数,方便我们将得分进行等级评定然后封存在字符中,方便后续调用。形参类型是int,返回值类型是char

Q2:有问题,如果没有break,那么会从满足的case开始之后的返回值都会多余且单字符不应该用双引号“”

task2

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

Q1:sum_digits是我们自行定义的一个函数,计算各数位上数字相加之和,方便后续调用

Q2:能实现同等效果,原代码的思维是循环的思维,改后的思维是函数递归的思维。

task3

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

Q1:power是我们自己定义的一个函数,可以计算x的n次幂;且当n为0时结果为1

Q2:是递归函数,其对应的递归模式如图

task4

 

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

task5

 1 #include<stdio.h>
 2 void Hanoi(int n, char from, char to, char temp);
 3 int count;
 4 int main()
 5 {
 6     int n;
 7     scanf_s("%d", &n);
 8     Hanoi(n, 'A', 'C', 'B');
 9     printf("一共移动了%d次", count);
10     return 0;
11 }
12 void Hanoi(int n, char from, char to, char temp)
13 {
14     if (n == 1){
15         printf("%d : %c --> %c\n", n, from, to);
16         count++;
17     }
18     else{
19         count++;
20         Hanoi(n - 1, from, temp, to);
21         printf("%d : %c --> %c\n", n, from, to);
22         Hanoi(n - 1, temp, to, from);
23     }
24 }

 

task6

 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(m==0||m==n)
15 return 1;
16 else if(m>n)
17 return 0;
18 else
19 return func(n - 1, m) + func(n - 1, m - 1);
20 //递归方式
21 }

 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         
13     return 0;
14 }
15 
16 int func(int n, int m){
17 int i,x,y,z;
18 x=1,y=1,z=1;
19 for(i=1;i<=n;i++){
20 x*=i;
21 }
22 for(i=1;i<=m;i++){
23 y*=i;        
24 }
25 for(i=1;i<=(n-m);i++){
26 z*=i;
27 }
28 return x/y/z;    
29 }
30 //迭代方式

task7

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int print_charman(int n);
 4 int r;
 5 int main(){
 6 int n;    
 7 printf("Enter n:");
 8 scanf("%d",&n);
 9 r=n;
10 print_charman(n);    
11 return 0;
12 }
13 int print_charman(n){
14 if(n>0){
15 int s,z;
16 for(s=2*n-1;s>0;s--) printf(" o \t");
17 printf("\n");
18 for(z=r-n;z>0;z--) printf("\t");
19 for(s=2*n-1;s>0;s--) printf("<H>\t");
20 printf("\n");
21 for(z=r-n;z>0;z--) printf("\t");
22 for(s=2*n-1;s>0;s--) printf("I I\t");
23 printf("\n\n");
24 for(z=r-n+1;z>0;z--) printf("\t");
25 print_charman(n-1);
26 }     
27 }

 

标签:10,return,int,ans,score,实验,printf
From: https://www.cnblogs.com/yxyue/p/18497884

相关文章

  • 实验三
    实验一源代码#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......
  • 实验2 类和对象_基础编程1
    实验任务1头文件#pragmaonce#include<string>//类T:声明classT{ //对象属性、方法public: T(intx=0,inty=0);//普通构造函数 T(constT&t);//复制构造函数 T(T&&t);//移动构造函数 ~T();//析构函数 voidadjust(intratio); voiddispla......
  • 实验3_C语言函数应用编程
    task1:输入分数,返回等级有问题。当输入高于E等级对应的分数时,函数返回值将是从该等级到E等级全部等级,如输入9将返回BCDE。 #include<stdio.h>charscore_to_grade(intscore);//函数声明intmain(){intscore;chargrade;while(scanf("%d",&score)!......
  • 实验3
    任务11#include<stdio.h>2charscore_to_grade(intscore);3intmain(){4intscore;5chargrade;6while(scanf("%d",&score)!=EOF){7grade=score_to_grade(score);8printf("分数:%d,等级:%c\n\n......
  • 20222313 2024-2025-1 《网络与系统攻防技术》实验三报告
    实验内容1.1实践内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧通过组合应用各种技术实现恶意代码免杀用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本1.2回答问题杀软是如何检测出恶意代码的?(1)特征码......
  • 软件设计--实验七
    实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。 类图:```mermaidclassDiagram......
  • 实验6:原型模式(向量的原型)
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。 1.类图   2. 源代码(1) 浅克隆代码和运行结果#include<bits/stdc++.h>usingnamespacestd;classVector......
  • 实验7:单例模式(学号的单一 )
    [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。1. 类图 1. 源代码//StudentID.javapackagetest7; publicclassStudentID{    privatestaticStudentIDinstance=null;    privateStringid;     privat......
  • 实验2
    任务一t.h#pragmaonce#include<string>//类T:声明classT{//对象属性、方法public:T(intx=0,inty=0);//普通构造函数T(constT&t);//复制构造函数T(T&&t);//移动构造函数~T();//析构函数voidad......
  • 实验2 类和对象
    实验任务1:t.h代码:1#pragmaonce2#include<string>3//类T:声明4classT{5//对象属性、方法6public:7T(intx=0,inty=0);//普通构造函数8T(constT&t);//复制构造函数9T(T&&t);//移动构造函数10~T();//析构函数11voidadjus......