用户按照YYYY/MM/DD的格式输入自己的出生日期,计算并输出用户的星座

用户按照YYYY/MM/DD的格式输入自己的出生日期,计算并输出用户的星座#include<stdio.h>voidmain(){inty,m,d;printf("请输入... 用户按照YYYY/MM/DD的格式输入自己的出生日期,计算并输出用户的星座
#include<stdio.h>
void main()
{
int y,m,d;
printf("请输入生日[YYYY/MM/DD]:");
scanf("%d/%d/%d",&y,&m,&d);
if (m>=3 && y>=22 && m<=04 && d<=20)
printf("该生日为牧羊座\n");
else if (m>=04 && y>=21 && m<=05 && d<=21)
printf("该生日为金牛座\n");
else if (m>=05 && y>=22 && m<=06 && d<=22)
printf("该生日为双子座\n");
else if (m>=06 && y>=23 && m<=07 && d<=23)
printf("该生日为巨蟹座\n");
else if (m>=07 && y>=24 && m<=08 && d<=23)
printf("该生日为狮子座\n");
else if (m>=08 && y>=24 && m<=09 && d<=23)
printf("该生日为处女座\n");
else if (m>=09 && y>=24 && m<=10 && d<=23)
printf("该生日为天枰座\n");
else if (m>=10 && y>=24 && m<=11 && d<=22)
printf("该生日为天蝎座\n");
else if (m>=11 && y>=23 && m<=12 && d<=22)
printf("该生日为射手座\n");
else if (m>=12 && y>=23 && m<=01 && d<=19)
printf("该生日为摩羯座\n");
else if (m>=01 && y>=20 && m<=02 && d<=19)
printf("该生日为水瓶座\n");
else if (m>=02 && y>=20 && m<=03 && d<=21)
printf("该生日为双鱼座\n");
}
以上是我写的,为什么 报错呢 在 8月和9月那3行报错 请高手讲解
1楼你试过么 我去掉0不好用 如果是高手 请讲解一下为什么错 我追20分 谢谢
2楼 注意要求输入[YYYY/MM/DD] 格式
3楼 说出了错误的所在 应该怎么改呢
4楼 说测试过 但是你测试 2008/08/31 了么
展开
 我来答
在世贸天阶灌篮的高飞燕草
2008-05-12 · TA获得超过2378个赞
知道大有可为答主
回答量:2070
采纳率:0%
帮助的人:2031万
展开全部
凡是数字前带0的都去掉就OK
输入的格式应该为
1984/02/03
VC6.0测试正常

include<stdio.h>
void main()
{
int y,m,d;
printf("请输入生日[YYYY/MM/DD]:");
scanf("%d/%d/%d",&y,&m,&d);
if (m>=3 && y>=22 && m<=4 && d<=20)
printf("该生日为牧羊座\n");
else if (m>=04 && y>=21 && m<=5 && d<=21)
printf("该生日为金牛座\n");
else if (m>=05 && y>=22 && m<=6 && d<=22)
printf("该生日为双子座\n");
else if (m>=06 && y>=23 && m<=7 && d<=23)
printf("该生日为巨蟹座\n");
else if (m>=07 && y>=24 && m<=8 && d<=23)
printf("该生日为狮子座\n");
else if (m>=8 && y>=24 && m<=9 && d<=23)
printf("该生日为处女座\n");
else if (m>=9 && y>=24 && m<=10 && d<=23)
printf("该生日为天枰座\n");
else if (m>=10 && y>=24 && m<=11 && d<=22)
printf("该生日为天蝎座\n");
else if (m>=11 && y>=23 && m<=12 && d<=22)
printf("该生日为射手座\n");
else if (m>=12 && y>=23 && m<=01 && d<=19)
printf("该生日为摩羯座\n");
else if (m>=1 && y>=20 && m<=02 && d<=19)
printf("该生日为水瓶座\n");
else if (m>=2 && y>=20 && m<=03 && d<=21)
printf("该生日为双鱼座\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
luosiyong
2008-05-12 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1632万
展开全部
把数字前的0去掉,

原因是:
以0开头的数字是八进制的.就是说,八进制里面的数字最大是7,用了8和9当然就出错了.
另外: 0x开头是十六进制的数据.

另外,你的程序逻辑上存在错误.下面是我更改之后的.
#include<stdio.h>
void main()
{
int y,m,d;
printf("请输入生日[YYYY/MM/DD]:");
scanf("%d/%d/%d",&y,&m,&d);
if ((m>=3 && y>=22) || (m<=4 && d<=20))
printf("该生日为牧羊座\n");
else if ((m>=4 && d>=21) || (m<=5 && d<=21))
printf("该生日为金牛座\n");
else if ((m>=5 && d>=22) || (m<=6 && d<=22))
printf("该生日为双子座\n");
else if ((m>=6 && d>=23) || (m<=7 && d<=23))
printf("该生日为巨蟹座\n");
else if ((m>=7 && d>=24) || (m<=8 && d<=23))
printf("该生日为狮子座\n");
else if ((m>=8 && d>=24) || (m<=9 && d<=23))
printf("该生日为处女座\n");
else if ((m>=9 && d>=24) || (m<=10 && d<=23))
printf("该生日为天枰座\n");
else if ((m>=10 && d>=24) || (m<=11 && d<=22))
printf("该生日为天蝎座\n");
else if ((m>=11 && d>=23) || (m<=12 && d<=22))
printf("该生日为射手座\n");
else if ((m>=12 && d>=23) || (m<=1 && d<=19))
printf("该生日为摩羯座\n");
else if ((m>=1 && d>=20) || (m<=2 && d<=19))
printf("该生日为水瓶座\n");
else if ((m>=2 && d>=20) || (m<=3 && d<=21))
printf("该生日为双鱼座\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yumenfeiyu945
2008-05-12 · TA获得超过8976个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:229万
展开全部
用/隔开也可以,其实是只要你去掉全部的0就Ok了,仔细改了再试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泠月冰辰
2008-05-12 · TA获得超过981个赞
知道小有建树答主
回答量:1149
采纳率:0%
帮助的人:819万
展开全部
把所有数字前面的0去掉就好了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式