#include char *sign[] = { // 星座 "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座", "水瓶座", "双鱼座" }; char *animal[] = { // 属相 "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" }; /* * 判断某个日期是否在一个区间内 * @month,day 待判断的日期 * @month_down, day_down 日期区间的下界 * @month_up, day_up 日期区间的上界 */ bool betweenTwoDate(int month, int day, int month_down, int day_down, int month_up, int day_up) { if(month_up == month_down) { if(month == month_up && day >= day_down && day <= day_up) return true; else return false; } else { if(month > month_down && month < month_up) return true; else if(month == month_down && day >= day_down) return true; else if(month == month_up && day <= day_up) return true; else return false; } } /* * 根据出生月日判断星座 * @month 出生月 * @day 出生日 */ char *getSign(int month, int day) { if(betweenTwoDate(month, day, 3, 21, 4, 20)) return sign[0]; else if(betweenTwoDate(month, day, 4, 21, 5, 20)) return sign[1]; else if(betweenTwoDate(month, day, 5, 21, 6, 21)) return sign[2]; else if(betweenTwoDate(month, day, 6, 22, 7, 22)) return sign[3]; else if(betweenTwoDate(month, day, 7, 23, 8, 22)) return sign[4]; else if(betweenTwoDate(month, day, 8, 23, 9, 22)) return sign[5]; else if(betweenTwoDate(month, day, 9, 23, 10, 22)) return sign[6]; else if(betweenTwoDate(month, day, 10, 23, 11, 21)) return sign[7]; else if(betweenTwoDate(month, day, 11, 22, 12, 21)) return sign[8]; else if(betweenTwoDate(month, day, 12, 22, 1, 19)) return sign[9]; else if(betweenTwoDate(month, day, 1, 20, 2, 18)) return sign[10]; else if(betweenTwoDate(month, day, 2, 19, 3, 20)) return sign[11]; } /* * 根据出生年判断属相 * @year 出生年 */ char *getAnimal(int year) { return animal[(year - 1900) % 12]; } int main() { int birth_year, birth_month, birth_day; // 出生年月日 int now_year, now_month, now_day; // 现在年月日 printf("请输入出生年月日:\n"); scanf("%d %d %d", &birth_year, &birth_month, &birth_day); printf("输入现在年月日:\n"); scanf("%d %d %d", &now_year, &now_month, &now_day); int age = now_year - birth_year; // 计算年龄 if(betweenTwoDate(now_month, now_day, 1, 1, birth_month, birth_day)) // 如果未到生日 age -= 1; // 减一岁 printf("年龄:%d\n", age); printf("星座:%s\n", getSign(birth_month, birth_day)); printf("属相:%s\n", getAnimal(birth_year)); return 0; }