杭电2011复试上机真题

ps:题是别的地方copy过来的,代码是自己的

第一题:

输入三个正整数A、B、C。判断这三个数能不能构成一个三角形。 

/*组成三角形的三条边a,b,c需同时满足条件:
  a+b>c
  a+c>b
  b+c>a
  而实际上只要最长边小于其余两边之和即可   
 */
#include<stdio.h>
#include<algorithm> 
using namespace std;

int main(){
	int a[3];
	while(scanf("%d %d %d",&a[0],&a[1],&a[2]) != EOF){
		getchar();
		sort(a,a+3);
		if(a[2] < a[0] + a[1]){
			printf("满足\n");
		}
		else{
			printf("不满足\n");
		}
	}	
	return 1;
}

第二题:

有个人从2003年1月1日开始,三天打鱼两天晒网,请输入月份、日期,问在当年的某一天他是在打鱼还是在晒网。 

//考察日期的处理
//只需输入月份和日期,年份固定在2003
#include<stdio.h>
int main(){
	int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	int mon,day;
	while(scanf("%d %d",&mon,&day) != EOF){
		getchar();
		int pass = 0;
		for(int i = 1;i < mon;i++){
			pass += days[i - 1];
		}
		pass += day;
		pass = pass%5;
		if(pass == 4 || pass == 0){
			printf("晒网\n");
		}
		else{	
			printf("打渔\n"); 
		}
	}	
	return 1;
}
/*判断任意年份是否为闰年,需要满足以下条件中的任意一个:
  1.该年份能被 4 整除同时不能被 100 整除
  2.该年份能被400整除
  if((year % 4 == 0 && y % 100 != 0) || year % 400 == 0)
*/

第三题:

丑数是这样定义的:如果一个正整数的素因子只包含 2、3、5、7四种,则它被称为丑数。以下数列 1, 2, 3,4, 5,6,7,8,9, 10,12,14,15,16,18, 20, 21,24,25, 27………. 就显示了前20个丑数。 

给出一个正整数N,判断这个数是否为丑数。 

#include<stdio.h>
//递归写法 
bool parse(int key){
	if(key % 2 == 0){
		return parse(key/2);
	}
	if(key % 3 == 0){
		return parse(key/3);
	}
	if(key % 5 == 0){
		return parse(key/5);
	}
	if(key % 7 == 0){
		return parse(key/7);
	}
	if(key == 1){
		return true;
	}
	return false;
} 

int main(){
	int com;
	while(scanf("%d",&com) != EOF){
		getchar();
		if(parse(com)){
			printf("yes\n");
		}
		else{
			printf("no\n");
		}		
	}	
	return 1;
}
//非递归写法的结构差不多,无非是在parse函数中,尽可能除2,3,5,7,除尽后判断 key == 1 

猜你喜欢

转载自blog.csdn.net/jh8w8m/article/details/87439573