实验三

task1:

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

批注 2025-10-24 083228
答:
1,作为函数变量名,用于计算并返回等级的值。类型均是字符型。
2,若去掉break,程序会一直运行直到score/10的结果符合default结果,在输出E。若去掉char ans,则程序上一个循环运行出的结果会被带到下一个循环并运行,影响最终结果。
task2:

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;
}

批注 2025-10-24 0832282
答:
1,定义的函数,用于计算并返回输入的一个数字各数位上的数字的和
2,能。第一种运用迭代算法,第二种运用递归算法。
task3:


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;
    }
}

批注 2025-10-24 090555
答:
1,用于计算并返回x的n次幂。
2,是递归模式。
task4:

int is_prime(int n){
	if(n==1) return 0;
	if(n==2) return 1;
	if(n%2==0) return 0;
	for(int i=3;i*i<=n;i++){
		if(n%i==0) return 0;
		
	}
	return 1;
}
int main(){
	int count;
	count=0;
	printf("100以内的孪生素数:\n");
	int n;
	for(n=1;n<=100;n++){
		if(is_prime(n)&&is_prime(n+2)){
			printf("%d %d\n",n,n+2);
			count++;
			
		}
	}
	printf("100以内的孪生素数共有:%d个",count);
	return 0;
}

屏幕截图 2025-10-30 100713
task5:

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||m==n) return 1;
	int a=1,b=1;
	int ans;
	int i,j;
	for(i=0;i<m;i++){
        a*=(n-i);
		
	}
	for(j=0;j<m;j++){
	
		b*=(m-j);
	}
	ans =a/b;
	return ans;
	
}


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

屏幕截图 2025-10-30 104258
task6:

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(int a,int b,int c){
	int i;
	if(a<b&&a<c) i=a;
	if(b<a&&b<c) i=b;
	if(c<b&&c<a) i=c;
	while(i!=0){
		if((a%i==0)&&(b%i==0)&&(c%i==0)) {
			return i;
			break;
		}
		i--;	
	}
}

屏幕截图 2025-10-30 110618

task7:

#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){
    for (int i = 1; i <=n; ++i) {
        for(int k=0;k<=i;k++) printf("\t");
        for (int j=2*n- 2*i + 1; j >0; j--) {
            printf("\t 0 ");
        }
        printf("\n");
        for(int k=0;k<=i;k++) printf("\t");
        for (int j=2*n- 2*i + 1; j >0; j--) {
            printf("\t<H> ");
        }
        printf("\n");
        for(int k=0;k<=i;k++) printf("\t");
        for (int j=2*n- 2*i + 1; j >0; j--) {
            printf("\tI I ");
        }
        printf("\n");
    }
}

屏幕截图 2025-10-30 142610

posted @ 2025-10-30 14:26  leozhuyuhao  阅读(15)  评论(1)    收藏  举报