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

来源:百度知道 编辑:UC知道 时间:2024/05/15 06:03:49
用户按照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(&qu

把数字前的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))