首页 > 其他分享 >实验3

实验3

时间:2024-10-27 21:32:28浏览次数:5  
标签:return int ans char score 实验 printf

实验任务1

#include <stdio.h>
char score_to_grade(int score); 
int main() {
int score;
char grade;
while(scanf("%d", &score) != EOF) {
grade = score_to_grade(score); 
printf("分数: %d, 等级: %c\n\n", score, grade);
}
return 0;
}
char score_to_grade(int score) {
char ans;
switch(score/10) {
case 10:
case 9: ans = 'A'; break;
case 8: ans = 'B'; break;
case 7: ans = 'C'; break;
case 6: ans = 'D'; break;
default:ans = 'E';
}
return ans;
}

 问题1:函数功能是将成绩转换为登第,形参类型是整形,返回值类型是字符。

问题2:有问题,没有break时最后ans总是等于最下面的‘E。

实验任务2

#include <stdio.h>
int sum_digits(int n); 
int main() {
int n;
int ans;
while(printf("Enter n: "), scanf("%d", &n) != EOF) {
ans = sum_digits(n); 
printf("n = %d, ans = %d\n\n", n, ans);
}
return 0;
}
int sum_digits(int n) {
int ans = 0;
    while(n != 0) {
        ans += n % 10;
        n /= 10;
    }
    return ans;
}
        

 

问题1:函数功能是计算给定数字各数位之和。

问题2:可以,这是一个递归函数,n<10时是递归出口,n>=10时计算sum_digits(n/10)在加上个位

原来的设计思路是迭代,分别把各数位取出来再加起来。

实验任务3

#include <stdio.h>

int power(int x,int n);

int main(){
    int x,n;
    int ans;
    while(printf("enter x and n:"),scanf("%d%d",&x,&n)!=EOF){
        ans=power(x,n);
        printf("n=%d,ans=%d\n\n",n,ans);
        
    }
    return 0;    
}

int power(int x,int n){
    int t;
    if(n==0)
        return 1;
    else if(n%2)
        return x*power(x,n-1);
    else{
        t=power(x,n/2);
        return t*t;    
        }
}

 问题1:计算x的n次方。

问题2:是递归

 实验任务4

#include <stdio.h>
int is_prime(int a){
    int i;
    for(i=2;i<=a/2;i++)
    {
        if(a%i==0)
            break;
    }
    if(i<=a/2)
        return 0;
    else
        return 1;
        
}
int main(){
    int a,count=0;
    for(a=2;a<=100;a++){
        if(is_prime(a)&&is_prime(a+2)){
            count++;
            printf("%d %d\n",a,a+2);
            
        }
        
    }
    printf("100以内的孪生素数有%d个",count);
    return 0;
}

 实验任务5

#include <stdio.h>
#include <stdlib.h>
void hanoi(int a,char from,char temp, char to);
void move(int a,char from,char to);
int count=0;
int main(){
    int a;
    while(scanf("%d",&a)!=EOF){
        hanoi(a,'A','B','C');
        printf("一共移动了%d次\n",count);
        count=0;
    }
    system ("pause");
    return 0; 
}
void hanoi(int a,char from,char temp,char to){
    if (a==1){
        move(a,from,to);
        
        }
    else{
        hanoi(a-1,from,to,temp); 
        move(a,from,to);
        hanoi(a-1,temp,from,to);
        
    }
}
void move(int a,char from,char to){
        count++;
        printf("%d:%c-->%c\n",a,from,to);

}

 

 

实验任务6

迭代:

#include <stdio.h>
int func(int n, int m); 
int main() {
int n, m;
int ans;
while(scanf("%d%d", &n, &m) != EOF) {
ans = func(n, m);
printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
}
return 0;
}
int func(int n, int m){
    int up=1,down=1,i;
    for(i=n;i>=n-m+1;i--){
        up*=i;
    }
    for(i=m;i>=1;i--)
    {
        down*=i;
    }
    return up/down;
    
} 

递归:

#include <stdio.h>
int func(int n, int m); 
int main() {
int n, m;
int ans;
while(scanf("%d%d", &n, &m) != EOF) {
ans = func(n, m);
printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
}
return 0;
}
int func(int n, int m){

    if (m>n)
        return 0;
    if(m==0)
        return 1;
    if(m==1){
    return n;
    }
    if(n==m)
        return 1;
    else{
    return func(n-1,m)+func(n-1,m-1);
    
    }

}

 实验任务7

#include <stdio.h>
#include <stdlib.h>
void print_charman(int n);
int main() {
int n;
printf("Enter n: ");
scanf("%d", &n);
print_charman(n); 
return 0;
}
void print_charman(int n){
    int i,j;
    for (j=0;j<n;j++){
    
for(i=1;i<=j;i++)
    printf("   \t");
for (i=1;i<=2*(n-j)-1;i++)
    printf(" O \t");
printf("\n");
for(i=1;i<=j;i++)
    printf("   \t");
for (i=1;i<=2*(n-j)-1;i++)
    printf("<H>\t");
printf("\n");    
for(i=1;i<=j;i++)
    printf("   \t");
    for (i=1;i<=2*(n-j)-1;i++)
    printf("I I\t");
printf("\n");
}
    }

 

 

标签:return,int,ans,char,score,实验,printf
From: https://www.cnblogs.com/sele/p/18509051

相关文章

  • 实验三
    实验任务1:task1.c源代码:1#include<stdio.h>23charscore_to_grade(intscore);45intmain(){6intscore;7chargrade;89while(scanf("%d",&score)!=EOF){10grade=score_to_grade(score);11......
  • 实验3
    task1#include<stdio.h>charscore_to_grade(intscore);//函数声明intmain(){intscore;chargrade;while(scanf("%d",&score)!=EOF){grade=score_to_grade(score);//函数调用printf("分数:%d,等级:......
  • 20222303 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    一、实验内容1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件;2.能够使用veil,加壳工具;3.能够使用C+shellcode编程;4.能够通过组合应用各种技术实现恶意代码免杀;5.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。二、基础问题回答1.杀软......
  • 实验2
    1、实验任务1:(1)代码部分1//t.h2#pragmaonce34#include<string>56//类T:声明7classT{8//对象属性、方法9public:10T(intx=0,inty=0);//普通构造函数11T(constT&t);//复制构造函数12T(T&&t);......
  • C# 小结实验:斐波那契数列 (7)
    代码//斐波那契数列publicclassFibonacciSequence{///<summary>///这是一个计算斐波那契数列方法。///</summary>///<paramname="index">第几个斐波那契数列</param>///<returns>第index个斐波那契数列值</returns>publicstat......
  • 实验三
    #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......
  • 实验二
    实验任务一:t.h#pragmaonce#include<string>classT{public: T(intx=0,inty=0); T(constT&t); T(T&&t); ~T(); voidadjust(intratio); voiddisplay()const;private: intm1,m2;public: staticintget_c......
  • 20222425 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    202224252024-2025-1《网络与系统攻防技术》实验三实验报告目录1.实验内容2.实验问题3.实验过程3.1正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧3.2通过组合应用各种技术实现恶意代码免杀3.3用另一电脑实测,在杀软开启的情况下,可运行并回连成功,......
  • HNU-操作系统实验Lab5-2022级
    实验目的深刻理解中断的原理和机制,掌握CPU访问中断控制器的方法,掌握Arm体系结构的中断机制和规范,实现时钟中断服务和部分异常处理等。实验过程前言中断是一种硬件机制。借助于中断,CPU可以不必再采用轮询这种低效的方式访问外部设备。将所有的外部设备与CPU直接相连是不......
  • 实验2 类和对象_基础编程
    1.实验任务一:t.h:#pragmaonce#include<string>//类T:声明classT{//对象属性、方法public:T(intx=0,inty=0);//普通构造函数T(constT&t);//复制构造函数T(T&&t);//移动构造函数~T();//析构函数vo......