干支、生肖查询器 v3.0(增加公元前年份的查询)

//main.cpp

//***************************************
//*程序名:判断干支与生肖    
//*功  能:输入公元纪年,判断干支与生肖 
//*编制人:刘聪          
//*创建时间:2017年1月24日
//*修改时间:2017年9月22日(v2.0)(v3.0) 
//***************************************
#include <iostream>  
#include <cstring>
#include <cstdlib>
#include "class.h"
using namespace std;  

int main()  
{    
    int GetInteger();
	void JudgeYear(int year);
	cout << "***********************************************************" << endl << endl; 
	while(1){
		cout << "正数代表公元后,负数代表公元前。" 
			<< "请输入需要判断的年号:";  
    	int year = GetInteger();
    	cout << endl;
    	if(year == 0){
			system("pause");  
        	return 0;  
		}
		else{
			if(year > 0){
				JudgePositive obj;
				obj.JudgeYear(year);
		    	cout << endl;
    			cout << "***********************************************************" << endl; 
    			cout << endl << "若要退出程序,请直接按数字0;否则请继续输入。" << endl << endl;	
    		}
			else{
    			JudgeNegative obj;
    			obj.JudgeYear(year);
		    	cout << endl;
    			cout << "***********************************************************" << endl; 
    			cout << endl << "若要退出程序,请直接按数字0;否则请继续输入。" << endl << endl;
    		}
		}
	}
    return 0;  
}  

int GetInteger(){    
    char buf[100] = {0};    
    while(strlen(buf) == 0)  //用户直接输入回车     
        cin.getline(buf, 100);    
    return atoi(buf);  //atoi函数是cstring头文件自带的     
}    


//class.h

#ifndef class_h
#define class_h

class Judge{
public:
	virtual void JudgeYear(int year) = 0;
};

class JudgePositive:public Judge{
public:
	void JudgeYear(int year);
};

class JudgeNegative:public Judge{
public:
	void JudgeYear(int year);
};

#endif

//class.cpp

#include <iostream>
#include "class.h"
using namespace std;

void JudgePositive::JudgeYear(int year){
	int a, b, c;
	
	a = year % 10 + 7;
    if(a > 10) a = a - 10; 
 
    c = b = year % 12 + 9;
    if(b > 12) c = b = b - 12;  

    cout << year << "年是‘";  

    switch( a ){  
        case 1:cout<<"甲";break;  
        case 2:cout<<"乙";break;  
        case 3:cout<<"丙";break;  
        case 4:cout<<"丁";break;  
        case 5:cout<<"戊";break;  
        case 6:cout<<"己";break;  
        case 7:cout<<"庚";break;  
        case 8:cout<<"辛";break;  
        case 9:cout<<"壬";break;  
        case 10:cout<<"癸";break;  
        default:;break;  
    }  

    switch( b ){  
        case 1:cout<<"子";break;  
        case 2:cout<<"丑";break;  
        case 3:cout<<"寅";break;  
        case 4:cout<<"卯";break;  
        case 5:cout<<"辰";break;  
        case 6:cout<<"巳";break;  
        case 7:cout<<"午";break;  
        case 8:cout<<"未";break;  
        case 9:cout<<"申";break;  
        case 10:cout<<"酉";break;  
        case 11:cout<<"戌";break;  
        case 12:cout<<"亥";break;  
        default:;break;  
    }   

    switch( c ){  
        case 1:cout<<"鼠";break;  
        case 2:cout<<"牛";break;  
        case 3:cout<<"虎";break;  
        case 4:cout<<"兔";break;  
        case 5:cout<<"龙";break;  
        case 6:cout<<"蛇";break;  
        case 7:cout<<"马";break;  
        case 8:cout<<"羊";break;  
        case 9:cout<<"猴";break;  
        case 10:cout<<"鸡";break;  
        case 11:cout<<"狗";break;  
        case 12:cout<<"猪";break;  
        default:;break;  
    }  

    cout<<"年’。";  
}

void JudgeNegative::JudgeYear(int year){
	int a, b, c;
	
	a = year % 10 - 7;
    if(a < -10) a = a + 10; 
 
    c = b = year % 12 - 9;
    if(b < -12) c = b = b + 12;  

    cout << year << "年是‘";  

    switch( a ){  
        case -1:cout<<"丁";break;  
        case -2:cout<<"丙";break;  
        case -3:cout<<"乙";break;  
        case -4:cout<<"甲";break;  
        case -5:cout<<"癸";break;  
        case -6:cout<<"壬";break;  
        case -7:cout<<"辛";break;  
        case -8:cout<<"庚";break;  
        case -9:cout<<"己";break;  
        case -10:cout<<"戊";break;  
        default:;break;  
    }  

    switch( b ){  
        case -1:cout<<"巳";break;  
        case -2:cout<<"辰";break;  
        case -3:cout<<"卯";break;  
        case -4:cout<<"寅";break;  
        case -5:cout<<"丑";break;  
        case -6:cout<<"子";break;  
        case -7:cout<<"亥";break;  
        case -8:cout<<"戌";break;  
        case -9:cout<<"酉";break;  
        case -10:cout<<"申";break;  
        case -11:cout<<"未";break;  
        case -12:cout<<"午";break;  
        default:;break;  
    }   

    switch( c ){  
        case -1:cout<<"蛇";break;  
        case -2:cout<<"龙";break;  
        case -3:cout<<"兔";break;  
        case -4:cout<<"虎";break;  
        case -5:cout<<"牛";break;  
        case -6:cout<<"鼠";break;  
        case -7:cout<<"猪";break;  
        case -8:cout<<"狗";break;  
        case -9:cout<<"鸡";break;  
        case -10:cout<<"猴";break;  
        case -11:cout<<"羊";break;  
        case -12:cout<<"马";break;  
        default:;break;  
    }  

    cout<<"年’。";  
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值