实验3

任务一

点击查看代码
#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;
}

实验截图

image
问题1:将分数转化为成绩;形参类型是int,返回值是char
问题2:无break会执行所有选项

任务二

点击查看代码
#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;
}

实验截图

image
问题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",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;
	} 
}

实验截图

image
问题1:求x的n次方
问题2:是,
6392b179a1a46d43e867c1501606bf25_720

任务四

点击查看代码
#include<stdio.h>
int is_prime(int n);
int main(){
	int cnt=0; 
	printf("100以内的孪生素数:\n");
	for(int n=2;n<=98;n++){
		if (is_prime(n)&&is_prime(n+2)){
			printf("%d %d\n",n,n+2);
			cnt++;
		}
	}
	printf("100以内的孪生素数共有%d个.\n",cnt);
	return 0;
}
int is_prime(int n){
	if(n<2)
	return 0;
	
	for(int i=2;i<n;i++){
		if(n%i==0)
		return 0;
	}
	return 1;
}

image

任务五

方式1

点击查看代码
#include<stdio.h>
int main(){
	while(1){
	int s1=1,s2=1,s3=1,n,m,ans;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
		s1*=i;
	for(int j=1;j<=m;j++)
		s2*=j;
	for(int k=1;k<=(n-m);k++)
		s3*=k;
	
	ans=s1/s2/s3;
	printf("n=%d,m=%d,ans=%d\n",n,m,ans);
}
	return 0;
}

方式2

点击查看代码
#include<stdio.h>
int func(int x,int y);
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 x,int y){
	if(x<y)
	return 0;
	if (y==0||x==y)
	return 1;
	return func((x-1),y)+func((x-1),(y-1));
}

image

任务六

点击查看代码
#include<stdio.h>
int gcd(int n,int m,int k);
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 n,int m,int k){
	int i;
	if(n<m&&n<k) i=n;
	if(m<n&&m<k) i=m;
	if(k<n&&k<m) i=k;
	while(1){
		if(n%i==0&&m%i==0&&k%i==0){
			return i;
			break;
		}
		i--;
}
}

image

任务七

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

image

image

image

posted @ 2025-10-30 15:57  Wedros  阅读(2)  评论(0)    收藏  举报