C语言,星座匹配问题

Description星座学描述了4种元素,每种元素包含3个星座。分别是“火”(白羊座、狮子座、射手座)、“土”(金牛座、处女座、摩羯座)、“气”(双子座、天秤座、水瓶座... Description
星座学描述了4种元素,每种元素包含3个星座。分别是“火”(白羊座、狮子座、射手座)、“土”(金牛座、处女座、摩羯座)、“气”(双子座、天秤座、水瓶座)和“水”(巨蟹座、天蝎座、双鱼座)。同一种元素的星座是最合得来的。输入两个人的生日,判断是否“合得来”

星座日期对照表:
水瓶:1.20-2.18 双鱼:2.19-3.20 白羊:3.21-4.19 金牛:4.20-5.20

双子:5.21-6.21 巨蟹:6.22-7.22 狮子:7.23-8.22 处女:8.23-9.22
天枰:9.23-10.23
天蝎:10.24-11.21 射手 :11.22-12.21 摩羯:12.22-1.19

Input
第1行是测试数据的组数n,后面有n行,每行有四位数,用空格隔开,其中前两个数表示第一个人的生日(月、日),后两个数表示第二个人的生日。

Output
输出n行,每行显示匹配结果,“合得来”输出“Y”,否则输出“N”。

Sample Input

2
12 12 10 21
6 5 9 28

Sample Output

N
Y

这题有什么方便一点的算法
展开
 我来答
种烧饼的怪叔叔
2014-09-09 · TA获得超过2214个赞
知道小有建树答主
回答量:824
采纳率:65%
帮助的人:450万
展开全部
1)建立两个数组 a[2];b[2]分别存储第一人的月,日,第二人的月,日,从合理性角度分析
月a[0]∈[1,12],a[1]也就是日期根据a[0]决定,a[0]是1,3,5,7,8,12情况下,a[1]不能是31.
a[0]是2的情况下,a[1]不能超过29.如果输入29要减去1(为了后面的日期差计算星座做基础)
2)第一个函数int sum_day (int* a),把刚才输入作为形参传入,按照一定公式计算N月M日是这年的第K天,然后返回这个日期。
3)因为每个星座之隔都是30天(2月按照28来看)。把这个天数,假设是返回的k,那么分类讨论,
第一种,k<19,那么直接知道是摩羯
第二种 switch ((k-19)/30) {
case 0:水瓶
case 1:双鱼
........
4)匹配的规则,我们已经知道双方的星座了,至于是否合得来用一个二维数组来存放情况
int c[12][12];横坐标的0~11分别表示水瓶~摩羯,纵坐标也是一个道理。比如
a[0][0]就是水瓶配水瓶,c[11][11]就是摩羯配摩羯。如果c[0][0]是存放1,则表示水瓶配水瓶是合适的,如果是0则表示不合适,1还是0由编程人员设置。
3)输出,(k-19)/30就是下标,例如c [(k1-19)/30][,(k2-19)/30],那么这将表示这个坐标的数据,1
表示合适,0表示不合适,k是表示这一年的第k天。
周fhv
2014-09-08 · 超过32用户采纳过TA的回答
知道答主
回答量:151
采纳率:0%
帮助的人:56.6万
展开全部
把日期换算成一个数值;比如1.22=1*31+22=53;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式