#include <stdio.h>
struct date
{
int i;
int j;
int year;
int month;
int day;
int week;
int animal_sign;
int zodiac;
};
bool is_leap_year(int year)
{
if(year%100 == 0)
{
if(year%400 == 0)
return true;
else
return false;
}
else
{
if(year%4 == 0)
return true;
else
return false;
}
}
void printf_week(int week)
{
switch(week)
{
case 0: printf("Suanday\n"); break;
case 1: printf("Monday\n"); break;
case 2: printf("Tuesday\n"); break;
case 3: printf("Wednesday\n"); break;
case 4: printf("Thursday\n"); break;
case 5: printf("Friday\n"); break;
case 6: printf("Saturday\n"); break;
}
return;
}
void printf_animal_sign(date d, date standard_date, int k)
{
int i = standard_date.i, j = standard_date.j;
if(d.year >= standard_date.year)
{
for(int n = 0; n < k; n++)
{
i++;
if(i == 11)
{
i = 1;
}
j++;
if(j == 13)
{
j = 1;
}
}
}
else
{
for(int n = 0; n < k; n++)
{
i--;
if(i == 0)
{
i = 10;
}
j--;
if(j == 0)
{
j = 12;
}
}
}
switch(i)
{
case 1: printf("甲"); break;
case 2: printf("已"); break;
case 3: printf("丙"); break;
case 4: printf("丁"); break;
case 5: printf("戊"); break;
case 6: printf("己"); break;
case 7: printf("庚"); break;
case 8: printf("辛"); break;
case 9: printf("壬"); break;
case 10: printf("癸"); break;
}
switch(j)
{
case 1: printf("子"); break;
case 2: printf("丑"); break;
case 3: printf("寅"); break;
case 4: printf("卯"); break;
case 5: printf("辰"); break;
case 6: printf("巳"); break;
case 7: printf("午"); break;
case 8: printf("未"); break;
case 9: printf("申"); break;
case 10: printf("酉"); break;
case 11: printf("戌"); break;
case 12: printf("亥"); break;
}
switch(d.animal_sign)
{
case 1: printf("鼠年--Your animal sign is rat\n"); break;
case 2: printf("牛年--Your animal sign is ox\n"); break;
case 3: printf("虎年--Your animal sign is tiger\n"); break;
case 4: printf("兔年--Your animal sign is rabbit\n"); break;
case 5: printf("龙年--Your animal sign is dragon\n"); break;
case 6: printf("蛇年--Your animal sign is snake\n"); break;
case 7: printf("马年--Your animal sign is horse\n"); break;
case 8: printf("羊年--Your animal sign is goat\n"); break;
case 9: printf("猴年--Your animal sign is monkey\n"); break;
case 10: printf("鸡年--Your animal sign is rooster\n"); break;
case 11: printf("狗年--Your animal sign is dog\n"); break;
case 12: printf("猪年--Your animal sign is pig\n"); break;
}
}
void printf_zodiac(date d)
{
switch(d.month)
{
case 1:
if(d.day <= 19)
{
printf("星 座:摩羯座 守护星:土星\n");
printf("守护神:农神萨图恩 关键词:现实\n");
printf("象 征:山羊 四象性:土\n");
printf("掌管宫位:第十官禄宫 阴阳性:阴性\n");
printf("最大特征:实际 三方官:基本\n");
printf("幸运石:绿宝石 金 属:银\n");
printf("--------------物质之宫擢升行星--------------\n");
printf("火星黄道带时间:约12月22日--01月19日(冬至--大寒前一天)\n");
}
else
{
printf("星 座:水瓶座 守护星:天王星\n");
printf("守护神:乌拉诺斯 关键词:若即若离\n");
printf("象 征:水瓶 四象性:风\n");
printf("掌管宫位:第十一福德宫 阴阳性:阳性\n");
printf("最大特征:求知 三方官:固定\n");
printf("幸运石:红色石榴石 金 属:蛋白石\n");
printf("--------------关系之宫擢升行星--------------\n");
printf("水星黄道带时间:约01月20日--02月18日(大寒--雨水前一天)\n");
}
break;
case 2:
if(d.day <= 18)
{
printf("星 座:水瓶座 守护星:天王星\n");
printf("守护神:乌拉诺斯 关键词:若即若离\n");
printf("象 征:水瓶 四象性:风\n");
printf("掌管宫位:第十一福德宫 阴阳性:阳性\n");
printf("最大特征:求知 三方官:固定\n");
printf("幸运石:红色石榴石 金 属:蛋白石\n");
printf("--------------关系之宫擢升行星--------------\n");
printf("水星黄道带时间:约01月20日--02月18日(大寒--雨水前一天)\n");
}
else
{
printf("星 座:双鱼座 守护星:海王星\n");
printf("守护神:海神波塞冬 关键词:难拒绝人\n");
printf("象 征:鱼 四象性:水\n");
printf("掌管宫位:第十二玄秘宫 阴阳性:阴性\n");
printf("最大特征:滥情 三方官:变动\n");
printf("幸运石:猫眼石 金 属:铜\n");
printf("--------------结束之宫擢升行星--------------\n");
printf("金星黄道带时间:约02月19日--03月20日(雨水--春分前一天)\n");
}
break;
case 3:
if(d.day <= 20)
{
printf("星 座:双鱼座 守护星:海王星\n");
printf("守护神:海神波塞冬 关键词:难拒绝人\n");
printf("象 征:鱼 四象性:水\n");
printf("掌管宫位:第十二玄秘宫 阴阳性:阴性\n");
printf("最大特征:滥情 三方官:变动\n");
printf("幸运石:猫眼石 金 属:铜\n");
printf("--------------结束之宫擢升行星--------------\n");
printf("金星黄道带时间:约02月19日--03月20日(雨水--春分前一天)\n");
}
else
{
printf("星 座:白羊座 守护星:火星\n");
printf("守护神:战神阿瑞斯 关键词:直白\n");
printf("象 征:公羊 四象性:火\n");
printf("掌管宫位:第一命宫 阴阳性:阳性\n");
printf("最大特征:控制 三方官:基本\n");
printf("幸运石:红宝石 金 属:铁\n");
printf("--------------生命之宫擢升行星--------------\n");
printf("太阳黄道带时间:约03月21日--04月19日(春分--谷雨前一天)\n");
}
break;
case 4:
if(d.day <= 19)
{
printf("星 座:白羊座 守护星:火星\n");
printf("守护神:战神阿瑞斯 关键词:直白\n");
printf("象 征:公羊 四象性:火\n");
printf("掌管宫位:第一命宫 阴阳性:阳性\n");
printf("最大特征:控制 三方官:基本\n");
printf("幸运石:红宝石 金 属:铁\n");
printf("--------------生命之宫擢升行星--------------\n");
printf("太阳黄道带时间:约03月21日--04月19日(春分--谷雨前一天)\n");
}
else
{
printf("星 座:金牛座 守护星:金星\n");
printf("守护神:爱神维纳斯 关键词:内敛\n");
printf("象 征:公牛 四象性:土\n");
printf("掌管宫位:第二财帛宫 阴阳性:阴性\n");
printf("最大特征:沉稳 三方官:固定\n");
printf("幸运石:翡翠、玉 金 属:木\n");
printf("--------------物质之宫擢升行星--------------\n");
printf("月亮黄道带时间:约04月20日--05月20日(谷雨--小满前一天)\n");
}
break;
case 5:
if(d.day <= 20)
{
printf("星 座:金牛座 守护星:金星\n");
printf("守护神:爱神维纳斯 关键词:内敛\n");
printf("象 征:公牛 四象性:土\n");
printf("掌管宫位:第二财帛宫 阴阳性:阴性\n");
printf("最大特征:沉稳 三方官:固定\n");
printf("幸运石:翡翠、玉 金 属:木\n");
printf("--------------物质之宫擢升行星--------------\n");
printf("月亮黄道带时间:约04月20日--05月20日(谷雨--小满前一天)\n");
}
else
{
printf("星 座:双子座 守护星:水星\n");
printf("守护神:智神赫尔墨斯 关键词:自由\n");
printf("象 征:孪生子 四象性:风\n");
printf("掌管宫位:第三兄弟宫 阴阳性:阳性\n");
printf("最大特征:思想 三方官:变动\n");
printf("幸运石:祖母绿 金 属:水银\n");
printf("--------------关系之宫擢升行星--------------\n");
printf("约05月21日--06月21日(小满--夏至前一天)\n");
}
break;
case 6:
if(d.day <= 21)
{
printf("星 座:双子座 守护星:水星\n");
printf("守护神:智神赫尔墨斯 关键词:自由\n");
printf("象 征:孪生子 四象性:风\n");
printf("掌管宫位:第三兄弟宫 阴阳性:阳性\n");
printf("最大特征:思想 三方官:变动\n");
printf("幸运石:祖母绿 金 属:水银\n");
printf("--------------关系之宫擢升行星--------------\n");
printf("约05月21日--06月21日(小满--夏至前一天)\n");
}
else
{
printf("星 座:巨蟹座 守护星:月亮\n");
printf("守护神:阿尔忒弥斯 关键词:家庭\n");
printf("象 征:蟹 四象性:水\n");
printf("掌管宫位:第四田宅宫 阴阳性:阴性\n");
printf("最大特征:感觉 三方官:基本\n");
printf("幸运石:珍珠 金 属:金\n");
printf("--------------结束之宫擢升行星--------------\n");
printf("木星及海王星黄道带时间:约06月22日--07月22日(夏至--大暑前一天)\n");
}
break;
case 7:
if(d.day <= 22)
{
printf("星 座:巨蟹座 守护星:月亮\n");
printf("守护神:阿尔忒弥斯 关键词:家庭\n");
printf("象 征:蟹 四象性:水\n");
printf("掌管宫位:第四田宅宫 阴阳性:阴性\n");
printf("最大特征:感觉 三方官:基本\n");
printf("幸运石:珍珠 金 属:金\n");
printf("--------------结束之宫擢升行星--------------\n");
printf("木星及海王星黄道带时间:约06月22日--07月22日(夏至--大暑前一天)\n");
}
else
{
printf("星 座:狮子座 守护星:太阳\n");
printf("守护神:光明神阿波罗 关键词:物质\n");
printf("象 征:狮子 四象性:火\n");
printf("掌管宫位:第五子女宫 阴阳性:阳性\n");
printf("最大特征:权力 三方官:固定\n");
printf("幸运石:红宝石 金 属:黄金\n");
printf("--------------生命之宫擢升行星--------------\n");
printf("冥王星黄道带时间:约07月23日--08月22日(大暑--处暑前一天)\n");
}
break;
case 8:
if(d.day <= 22)
{
printf("星 座:狮子座 守护星:太阳\n");
printf("守护神:光明神阿波罗 关键词:物质\n");
printf("象 征:狮子 四象性:火\n");
printf("掌管宫位:第五子女宫 阴阳性:阳性\n");
printf("最大特征:权力 三方官:固定\n");
printf("幸运石:红宝石 金 属:黄金\n");
printf("--------------生命之宫擢升行星--------------\n");
printf("冥王星黄道带时间:约07月23日--08月22日(大暑--处暑前一天)\n");
}
else
{
printf("星 座:处女座 守护星:水星\n");
printf("守护神:艾斯特莱雅 关键词:挑剔\n");
printf("象 征:处女 四象性:土\n");
printf("掌管宫位:第六奴仆宫 阴阳性:阴性\n");
printf("最大特征:分析力 三方官:变动\n");
printf("幸运石:蓝宝石 金 属:水银\n");
printf("--------------物质之宫黄道带时间--------------\n");
printf("约08月23日--09月23日(处暑--秋分前一天)\n");
}
break;
case 9:
if(d.day <= 22)
{
printf("星 座:处女座 守护星:水星\n");
printf("守护神:艾斯特莱雅 关键词:挑剔\n");
printf("象 征:处女 四象性:土\n");
printf("掌管宫位:第六奴仆宫 阴阳性:阴性\n");
printf("最大特征:分析力 三方官:变动\n");
printf("幸运石:蓝宝石 金 属:水银\n");
printf("--------------物质之宫黄道带时间--------------\n");
printf("约08月23日--09月23日(处暑--秋分前一天)\n");
}
else
{
printf("星 座:天秤座 守护星:金星\n");
printf("守护神:阿佛洛狄忒 关键词:公平\n");
printf("象 征:天秤 四象性:风\n");
printf("掌管宫位:第七夫妻宫 阴阳性:阳性\n");
printf("最大特征:衡量抉择 三方官:基本\n");
printf("幸运石:橄榄石 金 属:木\n");
printf("--------------关系之宫擢升行星--------------\n");
printf("土星黄道带时间:约09月24日--10月23日(秋分--霜降前一天)\n");
}
break;
case 10:
if(d.day <= 23)
{
printf("星 座:天秤座 守护星:金星\n");
printf("守护神:阿佛洛狄忒 关键词:公平\n");
printf("象 征:天秤 四象性:风\n");
printf("掌管宫位:第七夫妻宫 阴阳性:阳性\n");
printf("最大特征:衡量抉择 三方官:基本\n");
printf("幸运石:橄榄石 金 属:木\n");
printf("--------------关系之宫擢升行星--------------\n");
printf("土星黄道带时间:约09月24日--10月23日(秋分--霜降前一天)\n");
}
else
{
printf("星 座:天蝎座 守护星:冥王星\n");
printf("守护神:冥王哈迪斯 关键词:神秘\n");
printf("象 征:蝎子 四象性:水\n");
printf("掌管宫位:第八疾厄宫 阴阳性:阴性\n");
printf("最大特征:渴望 三方官:固定\n");
printf("幸运石:猫眼石 金 属:铁\n");
printf("--------------结束之宫擢升行星--------------\n");
printf("天王星黄道带时间:约10月24日--11月22日(霜降--小雪前一天)\n");
}
break;
case 11:
if(d.day <= 22)
{
printf("星 座:天蝎座 守护星:冥王星\n");
printf("守护神:冥王哈迪斯 关键词:神秘\n");
printf("象 征:蝎子 四象性:水\n");
printf("掌管宫位:第八疾厄宫 阴阳性:阴性\n");
printf("最大特征:渴望 三方官:固定\n");
printf("幸运石:猫眼石 金 属:铁\n");
printf("--------------结束之宫擢升行星--------------\n");
printf("天王星黄道带时间:约10月24日--11月22日(霜降--小雪前一天)\n");
}
else
{
printf("星 座:射手座 守护星:木星\n");
printf("守护神:众神之王宙斯 关键词:贪玩\n");
printf("象 征:人马 四象性:火\n");
printf("掌管宫位:第九迁移宫 阴阳性:阳性\n");
printf("最大特征:自由 三方官:变动\n");
printf("幸运石:绿松石 金 属:锡\n");
printf("--------------生命之宫黄道带时间--------------\n");
printf("约11月23日--12月21日(小雪--冬至前一天)\n");
}
break;
case 12:
if(d.day <= 21)
{
printf("星 座:射手座 守护星:木星\n");
printf("守护神:众神之王宙斯 关键词:贪玩\n");
printf("象 征:人马 四象性:火\n");
printf("掌管宫位:第九迁移宫 阴阳性:阳性\n");
printf("最大特征:自由 三方官:变动\n");
printf("幸运石:绿松石 金 属:锡\n");
printf("--------------生命之宫黄道带时间--------------\n");
printf("约11月23日--12月21日(小雪--冬至前一天)\n");
}
else
{
printf("星 座:摩羯座 守护星:土星\n");
printf("守护神:农神萨图恩 关键词:现实\n");
printf("象 征:山羊 四象性:土\n");
printf("掌管宫位:第十官禄宫 阴阳性:阴性\n");
printf("最大特征:实际 三方官:基本\n");
printf("幸运石:绿宝石 金 属:银\n");
printf("--------------物质之宫擢升行星--------------\n");
printf("火星黄道带时间:约12月22日--01月19日(冬至--大寒前一天)\n");
}
break;
}
}
int main()
{
printf("请输入日期\n格式形如:年/月/日\n");
int n = 0;
int m = 0;
int k = 0;
struct date standard_date = {6, 12, 2019, 2, 28, 4, 12, 12};
struct date d;
scanf("%d/%d/%d", &d.year, &d.month, &d.day);
if(d.year <= standard_date.year)
{
for(int i = d.year+1; i > d.year && i <= standard_date.year; i++)
{
if(is_leap_year(i))
n++;
}
n = n + (standard_date.year - d.year);
n = n % 7;
if(n > standard_date.week)
{
d.week = standard_date.week + 7 - n;
printf("The end day of the desired year is ");
printf_week(d.week);
}
else
{
d.week = standard_date.week - n;
printf("The end day of the desired year is ");
printf_week(d.week);
}
k = standard_date.year - d.year;
k %= 12;
d.animal_sign = standard_date.animal_sign - k;
if(d.animal_sign <= 0)
{
d.animal_sign += 12;
}
}
else
{
for(int i = standard_date.year+1; i > standard_date.year && i <= d.year; i++)
{
if(is_leap_year(i));
n++;
}
n = n + (d.year - standard_date.year);
n = n % 7;
if(n < (7 - standard_date.week))
{
d.week = standard_date.week + n;
printf("The end day of the desired year is ");
printf_week(d.week);
}
else
{
d.week = standard_date.week + n - 7;
printf("The end day of the desired year is ");
printf_week(d.week);
}
k = standard_date.year - d.year;
k %= 12;
d.animal_sign = standard_date.animal_sign + k;
if(d.animal_sign > 12)
{
d.animal_sign -= 12;
}
}
switch(d.month)
{
case 1:
if(is_leap_year(d.year))
{
m = 31 - d.day + 29;
}
else
{
m = 31 - d.day + 28;
}
break;
case 2:
if(is_leap_year(d.year))
{
m = 29 - d.day;
}
else
{
m = 28 - d.day;
}
break;
case 3: m = d.day; break;
case 4: m = d.day + 31; break;
case 5: m = d.day + 61; break;
case 6: m = d.day + 92; break;
case 7: m = d.day + 122; break;
case 8: m = d.day + 153; break;
case 9: m = d.day + 184; break;
case 10: m = d.day + 214; break;
case 11: m = d.day + 245; break;
case 12: m = d.day + 275; break;
}
m = m % 7;
if(d.month != 1 && d.month != 2)
{
if(m < (7 - d.week))
{
d.week = d.week + m;
}
else
{
d.week = d.week + m - 7;
}
}
else
{
if(m <= d.week)
{
d.week = d.week - m;
}
else
{
d.week = d.week - m + 7;
}
}
printf("It's ");
printf_week(d.week);
printf_animal_sign(d, standard_date, k);
printf_zodiac(d);
return 0;
}