#include <stdio.h>
int main(int argc, const char * argv[])
{
int year,b;
int m;
int n;
char * xz[12]={"摩羯座","水瓶座","双鱼座","白羊座","金牛座","双子座","巨蟹座","狮子座","处女座","天秤座","天蝎座","射手座"};
while (1)
{
printf("请输入您的出生年份:");
scanf("%d",&year);
if(year>=2021)
b=(year-2021)%12;
else
b=12-(2021-year)%12;
switch(b)
{
case 0: printf("今年是牛年\n");
break;
case 1: printf("今年是虎年\n");
break;
case 2: printf("今年是兔年\n");
break;
case 3: printf("今年是龙年\n");
break;
case 4: printf("今年是蛇年\n");
break;
case 5: printf("今年是马年\n");
break;
case 6: printf("今年是羊年\n");
break;
case 7: printf("今年是猴年\n");
break;
case 8: printf("今年是鸡年\n");
break;
case 9: printf("今年是狗年\n");
break;
case 10: printf("今年是猪年\n");
break;
case 11: printf("今年是鼠年\n");
break;
}
}
{
printf("请输入您的出生月份:");
scanf("%d",&m);
printf("请输入您的出生日期:");
scanf("%d",&n);
switch (m )
{
case 1:
printf("您的星座是:%s\n",n<=19?xz[0]:xz[1]);
break;
case 2:
printf("您的星座是:%s\n",n<=18?xz[1]:xz[2]);
break;
case 3:
printf("您的星座是:%s\n",n<=20?xz[2]:xz[3]);
break;
case 4:
printf("您的星座是:%s\n",n<=19?xz[3]:xz[4]);
break;
case 5:
printf("您的星座是:%s\n",n<=20?xz[4]:xz[5]);
break;
case 6:
printf("您的星座是:%s\n",n<=21?xz[5]:xz[6]);
break;
case 7:
printf("您的星座是:%s\n",n<=22?xz[6]:xz[7]);
break;
case 8:
printf("您的星座是:%s\n",n<=22?xz[7]:xz[8]);
break;
case 9:
printf("您的星座是:%s\n",n<=22?xz[8]:xz[9]);
break;
case 10:
printf("您的星座是:%s\n",n<=23?xz[9]:xz[10]);
break;
case 11:
printf("您的星座是:%s\n",n<=22?xz[10]:xz[11]);
break;
case 12:
printf("您的星座是:%s\n",n<=21?xz[11]:xz[0]);
break;
default:
break;
}
int a ;
printf("继续请输入1:");
scanf("%d",&a);
if (a==1)
{
m=0;
n=0;
}
else
{
break;
}
}
return 0;
}
判断星座那里是不是少了一个while,然后前面判断生肖要加一个退出判断,我这里是设置输入年份为0退出生肖判断,稍微修改了一下,如下:
#include <stdio.h>
int main(int argc, const char * argv[])
{
int year,b;
int m;
int n;
char * xz[12]={"摩羯座","水瓶座","双鱼座","白羊座","金牛座","双子座","巨蟹座","狮子座","处女座","天秤座","天蝎座","射手座"};
while (1)
{
printf("请输入您的出生年份:");
scanf("%d",&year);
if(year==0){
break;
}
else if(year>=2021)
b=(year-2021)%12;
else
b=12-(2021-year)%12;
switch(b)
{
case 0: printf("今年是牛年\n");
break;
case 1: printf("今年是虎年\n");
break;
case 2: printf("今年是兔年\n");
break;
case 3: printf("今年是龙年\n");
break;
case 4: printf("今年是蛇年\n");
break;
case 5: printf("今年是马年\n");
break;
case 6: printf("今年是羊年\n");
break;
case 7: printf("今年是猴年\n");
break;
case 8: printf("今年是鸡年\n");
break;
case 9: printf("今年是狗年\n");
break;
case 10: printf("今年是猪年\n");
break;
case 11: printf("今年是鼠年\n");
break;
}
}
while(1){
printf("请输入您的出生月份:");
scanf("%d",&m);
printf("请输入您的出生日期:");
scanf("%d",&n);
switch (m )
{
case 1:
printf("您的星座是:%s\n",n<=19?xz[0]:xz[1]);
break;
case 2:
printf("您的星座是:%s\n",n<=18?xz[1]:xz[2]);
break;
case 3:
printf("您的星座是:%s\n",n<=20?xz[2]:xz[3]);
break;
case 4:
printf("您的星座是:%s\n",n<=19?xz[3]:xz[4]);
break;
case 5:
printf("您的星座是:%s\n",n<=20?xz[4]:xz[5]);
break;
case 6:
printf("您的星座是:%s\n",n<=21?xz[5]:xz[6]);
break;
case 7:
printf("您的星座是:%s\n",n<=22?xz[6]:xz[7]);
break;
case 8:
printf("您的星座是:%s\n",n<=22?xz[7]:xz[8]);
break;
case 9:
printf("您的星座是:%s\n",n<=22?xz[8]:xz[9]);
break;
case 10:
printf("您的星座是:%s\n",n<=23?xz[9]:xz[10]);
break;
case 11:
printf("您的星座是:%s\n",n<=22?xz[10]:xz[11]);
break;
case 12:
printf("您的星座是:%s\n",n<=21?xz[11]:xz[0]);
break;
default:
break;
}
int a ;
printf("继续请输入1:");
scanf("%d",&a);
if (a==1)
{
m=0;
n=0;
}
else
{
break;
}
}
return 0;
}