实验三

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

屏幕截图 2025-10-25 173035
问题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;
} 

屏幕截图 2025-10-25 173635
问题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-1);
	else{
		t=power(x,n/2);
		return t*t;
	}
} 

屏幕截图 2025-10-25 174033
问题1:计算x的n次幂。
问题2:
F36C2D0B2C9FF181F2969B4BFD64C954
实验4

点击查看代码
#include<stdio.h>
int su(int n){
	int i;
	if(n==1)return 0;
	if(n==2||n==3) return 1;
	else if(n%2==0) return 0;
	for(i=3;i<n;i++){
		if(n%i==0){return 0;
		break;
		}
	}
		if(n==i) return 1;
} 
int main(){printf("100以内的孪生素数:\n");
	int t=0;
	for(int i=1;i<99;i+=2){
		if(su(i)&&su(i+2)){
		printf("%d %d\n",i,i+2);t++;}
	}
	return 0;
}

image
实验5

点击查看代码
#include<stdio.h>
int func(int m,int n);
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 return func(n-1,m)+func(n-1,m-1);
}
/*int func(int n,int m){
	int t=1;
	if(n<m)return 0;
	else if(n==m||m==0)return 1; 
	else{for(int i=n;i>n-m;i--){
		t*=i;
	}
	for(int i=1;i<=m;i++){
		t/=i;
	}
	}
	return t;
}*/

屏幕截图 2025-10-25 175508
实验6

点击查看代码
#include<stdio.h>
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 min=a,ans;
	if(a>b)min=b;
	if(a>c)min=c;
	for(int i=1;i<min;i++){
		if(a%i==0&&b%i==0&&c%i==0)ans=i;
	}
	return ans;
}

屏幕截图 2025-10-25 175616
实验7

点击查看代码
#include<stdio.h>
#include<stdlib.h>
void printf_charman(int n);
int main(){
	int n;
	printf("Enter n:");
	scanf("%d",&n);
	printf_charman(n);
	return 0;
} 
void printf_charman(int n){
	int m=n; 
	while(n--){
	for(int i=1;i<m-n;i++)printf("\t");	for(int i=0;i<2*n+1;i++)printf(" O \t");printf("\n"); 
	for(int i=1;i<m-n;i++)printf("\t");	for(int i=0;i<2*n+1;i++)printf("<H>\t");printf("\n");
	for(int i=1;i<m-n;i++)printf("\t");	for(int i=0;i<2*n+1;i++)printf("I I\t");printf("\n");
	}
}

屏幕截图 2025-10-25 175710

image

posted @ 2025-10-25 17:58  牛汝顺  阅读(11)  评论(1)    收藏  举报