可以帮我看看哪里出问题了吗,说我最后一个break有问题不知道咋改

#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;
}