实验三

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

屏幕截图 2026-04-20 190607

问题1:功能:将整数分数转换为对应的等级数字

问题2:1.双引号赋值字符变量,类型错误;2.无break,无法实现分层目的

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

屏幕截图 2026-04-20 192259

问题1:计算一个整数的各位数字之和

问题2:能。递归:将问题分解成子问题;循环:循环逐位计算

#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");
	}
	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;
	 }
 }

  屏幕截图 2026-04-20 202505

问题1:是递归函数,递归

问题2:是

1

#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<0||m>n)
	return 0;
	if(m==0||m==n)
	return 0;
	return func(n-1,m)+func(n-1,m-1);
	
}

 

#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<0||m>n)
	return 0;
	if(m==0||m==n)
	return 1;
	if(m>n-m)
	m=n-m;
	long long res=1;
	for(int i=1;i<=m;i++){
		res=res*(n-m+i)/i; 
	}
	return(int)res;
}

  

 

 屏幕截图 2026-04-20 212302

 

#include<stdio.h>
int gcd_two(int x,int y);
int gcd(int a,int b,int c);
int main(){
	int a,b,c;
	int ans;
	while(scanf("%d%d%d",&a,&b,&c)!=EOF){
		ans=gcd(a,b,c);
		printf("最大公约数:%d\n\n",ans);
	}
	return 0;
}
int gcd_two(int x,int y){
	while(y!=0){
		int temp=x%y;
		x=y;
		y=temp; 
	}
	return x;
}

int gcd(int x,int y,int z){
	int temp=gcd_two(x,y);
	return gcd_two(temp,z);
	
}

  屏幕截图 2026-04-20 213540

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

  屏幕截图 2026-04-20 214925

 

posted @ 2026-04-20 21:50  梅歌宁  阅读(5)  评论(0)    收藏  举报