实验3(2.0)

任务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 符合一种情况后,程序并未终止,继续运行直至最后一条,因此无论输入任何值都,ans 的值都会返回为E

 

任务二

#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  第一种实现方法利用的是迭代法而第二种利用的是递归法

实验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/2);
    else {
        t=power(x,n/2);
        return t*t;
    }    
}

 

问题1 计算x的n次幂

问题2 

任务4

#include <stdio.h>
#include <math.h>

int is_prime(int n);
int main(){
    int n ,c=0 ; 
    for (n=2;n<=100;n++){
        if(is_prime(n)&&is_prime(n+2)){
        printf("%d %d\n",n,n+2);
        c++;
        }
        
    }
    printf ("100以内的孪生素数共有%d对\n",c);
    return 0;
}
int is_prime(int n){
    int m;
    for(m=2;m<=sqrt(1.0*n);m++)
       if(n%m==0)
         return 0;
    return 1;
}

任务5

#include<stdio.h>
#include<stdlib.h>
int c=0;
void hanoi(unsigned int n,char from,char temp,char to);
void moveplate(unsigned int n,char from,char to);
int main(){
unsigned int n;

while(scanf("%u",&n) !=EOF){
c=0;
hanoi(n,'A','B','C');
printf("一共移动了%d次\n",c);
}
return 0;
}
void hanoi(unsigned int n,char from,char temp,char to){

if(n==1) {
moveplate(n,from,to);

}
else{
hanoi(n-1,from,to,temp);
moveplate(n,from,to);
hanoi(n-1,temp,from,to);

}
}
void moveplate(unsigned int n,char from,char to){
printf("%u;%c-->%c\n",n,from,to);
++c;

}

任务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){
    if(n<m) return 0;
    else if(n==m||m==0) return 1;
    else{
    int a,b,x=1,y=1;
    for(a=0;a<m;a++){
        x*=n-a;
    }
    for(b=0;b<m;b++){
        y*=m-b;
    }
    return (x/y);
}
}

递归

#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(n<m) return 0;
    if(m==0) return 1;
    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 :");
    scanf("%d",&n);
    print_charman(n);
    
    return 0;
} 
void print_charman(int n){
    int i,m,c,k=0;
    n=2*n-1;
    while(n>0){
    m=n;
    for(c=0;c<k;c++){    
        
        printf("    ");
    
        }
    
    for(c=0;c<m;c++){    
        printf(" o ");
        printf("    ");
    
        }
            printf("\n");
    for(c=0;c<k;c++){    
        
        printf("    ");
    
        }
    for(c=0;c<m;c++){    
        printf("<H>");
        printf("    ");
    
        }
            printf("\n");
    for(c=0;c<k;c++){    
        
        printf("    ");
    
        }
    for(c=0;c<m;c++){    
        printf("I I");
        printf("    ");
    
        }
            printf("\n");
    i=0;
    n=n-2; 
    k++;
    }
    
 
}

 

posted @ 2024-10-29 14:36  陈熠萱  阅读(2)  评论(0编辑  收藏  举报