首页 > 其他分享 >实验三

实验三

时间:2024-10-26 14:20:55浏览次数:1  
标签:10 return int ans char 实验 printf

实验任务1

源代码

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

图片

问题

功能为通过成绩计算等第

类型为字符型

更改后会按顺序输出E,而不是对应的等第

实验任务2

源代码

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

图片

问题

功能 得出这个数每位相加的值

 

能实现

原代码是ans每次加上n个位上的数,n再去掉个位的数,直至n为0

更改后为n每次除以10后n个位的数相加,如果只剩2位数,就能实现十位个位直接相加,因为n变为个位数了,所以停止,返回n了。

 

实验任务3

源代码

 

 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 int power(int x, int n){
18     int t;
19     if(n==0)
20         return 1;
21     else if(n % 2)
22         return x * power(x, n-1);
23     else{
24         t = power(x, n/2);
25         return t*t;
26     }
27 }

 

图片

问题

功能为求x的n次方

当n=0时,x的0次=1

当n>0时,x的n次=x*x的n-1次

 

实验任务4

源代码

 

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

 

图片

 

实验任务5

源代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void hanoi(unsigned int n,char from,char temp,char to);
 4 void moveplate(unsigned int n,char from,char to);
 5 static int s = 0;
 6 int main(){
 7     unsigned int n;
 8     while(scanf("%u",&n) != EOF){
 9     hanoi(n,'A','B','C');
10     printf("一共移动了%d次\n",s);
11     s = 0;
12     }
13     system("pause");
14     return 0;
15 }
16 void hanoi(unsigned int n,char from,char temp,char to)
17 {
18     if(n == 1){
19         moveplate(n,from,to);
20         s++;
21     }
22     else
23     {
24         hanoi(n-1,from,to,temp);
25         moveplate(n,from,to);
26         hanoi(n-1,temp,from,to);
27         s++;
28     }
29 }
30 void moveplate(unsigned int n,char from,char to)
31 {
32     printf("%u: %c-->%c\n",n, from, to);
33 }

图片

 

实验任务6

源代码1(迭代)

 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 int func(int n, int m){
16     int i,s=1;
17     
18     if(n-m<0)
19     return 0;
20     
21     if(m>(n-m))
22     m=n-m;
23     
24     for(i=0;i<m;i++)
25         s = s*(n-i)/(i+1);
26         
27     return s;
28 }

图片

源代码2(递归)

 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 int func(int n, int m){
16     int s;
17     
18     if(m==0||n==m)
19     return 1;
20     else if(m>n)
21     return 0;
22     else
23     s = func(n-1,m)+func(n-1,m-1);
24     
25     return s;
26 }

图片

 

实验任务7

源代码

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

图片

 

标签:10,return,int,ans,char,实验,printf
From: https://www.cnblogs.com/schince/p/18504042

相关文章

  • 实验2 类和对象_基础编程1
    任务1:t.h#pragmaonce#include<string>//类T:声明classT{//对象属性、方法public:T(intx=0,inty=0);//普通构造函数T(constT&t);//复制构造函数T(T&&t);//移动构造函数~T();//析构函数voidadjus......
  • 实验2 类和对象_基础编程1
    1.实验任务1t.h源代码:1#pragmaonce2#include<string>34//类T:声明5classT{6public:7//对象属性、方法8T(intx=0,inty=0);//普通构造函数9T(constT&t);//复制构造函数10T(T&&t);......
  • 程序设计实验2
    任务1task1.cpp1#include"t.h"2#include<iostream>34usingstd::cout;5usingstd::endl;67voidtest();89intmain(){10test();11cout<<"\nmain:\n";12cout<<"Tobjects......
  • 实验三
    实验任务11#include<stdio.h>2#include<stdlib.h>3charscore_to_grade(intscore);4intmain(){5intscore;6chargrade;78while(scanf("%d",&score)!=EOF){9grade=score_to_grade(score);1......
  • OOP实验二
    任务1源码:1#pragmaonce23#include<string>45//类T:声明6classT{7//对象属性、方法8public:9T(intx=0,inty=0);//普通构造函数10T(constT&t);//复制构造函数11T(T&&t);//移动构造函数12~T();......
  • 实验3
    任务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);......
  • python+flask框架的基于微信小程序的高校实验室考勤管理系统的设计与实现前端8(开题+
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景关于高校实验室考勤管理问题的研究,现有研究主要集中在传统考勤系统的设计与实现上,如基于RFID、指纹识别等技术。然而,随着移动互联网技术的......
  • 实验三
    task11#include<stdio.h>2chargrade(intscore)3{4chara;5switch(score/10)6{7case10:8case9:a='A';break;9case8:a='B';break;10case7:a='C';b......
  • 实验三
    实验11#include<stdio.h>2charscore_to_grade(intscore); //函数声明3intmain(){4  intscore;5  chargrade;6  while(scanf("%d",&score)!=EOF){7    grade=score_to_grade(score); //函数调用8    printf("分数:%d,......
  • 实验6-2 英文字母替换加密(大小写转换+后移1位)
     ......