实验3

1.问题1:程序的功能是将不同分数段的成绩转化成对应的等级;

形参类型:整形;

返回值类型:字符型。

问题2:没有break时,就会一直执行下去,也就是说,如果成绩时90分以上的话,ABCDE都会被输出。

2.问题1:功能是输出一个整数的各位数字之和。

问题2:可以,第二种是递归模式,第一种是迭代模式。

3.问题1:功能是计算x的n次方。

问题2:是递归模式。

4.代码:

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

  截图:

5.

代码:

#include<stdio.h>
int count=0;
void hanoi(int n,char from,char to ,char temp);
int main(){
	
    int n;
 
	char from='A',to='C',temp='B';
	while(scanf("%d",&n)!=EOF){
	 count=0;
		hanoi(n,from,to,temp );
		printf("共移动了%d次.",count);
	}
	
	
	return 0;
}
void hanoi(int n,char from,char to,char temp ){
 
	if(n==1){
		printf("%d:%c-->%c\n",n,from,to );
		count++;
	}else{
		hanoi(n-1,from,temp,to);
	    printf("%d:%c-->%c\n",n,from,to );
	    count++;
	    hanoi(n-1,temp,to,from);
	}
		 
     return;
}

  

截图:

 

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(m==n || m==0){
		return 1;
	}else if(m>n){
		return 0;
	}else {
		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){
  
 //迭代方式
 int a=1,b=1,c=1;
 int i,j,k;
 
 if(m==n || m==0){
		return 1;
	}else if(m>n){
		return 0;
	}
	
	
 for(i=1;i<=n;i++) {
 	a=a*i;
 }
 for(j=1;j<=n-m;j++) {
 	b=b*j;
 }
  for(k=1;k<=m;k++) {
 	c=c*k;
 }	
  	return a/(b*c);
  }

  

截图:

 7.

代码:

#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;
	int ans=1;
	int i;
	 
	if(min>b){
		min=b;
	}
	
	if(min>c){
		min=c;
	}
	
	for(i=min;i>1;i--){
		if((a%i==0)  &&  (b%i==0)  &&  (c%i==0)){
			ans=i;
			break;
		}
	 
	}
	
	
	
	return ans;
}

  

截图:

 

posted @ 2025-04-06 21:14  hahahaha13  阅读(26)  评论(0)    收藏  举报