求大lao告知这个怎么改能对,我是刚学不久

img

img

img


求大lao告知这个怎么改能对,我是刚学不久,这个题写的部分正确,哪里错了请指正


#include <stdio.h>
//辛巳蛇宝男
int main()
{
    long long num = 0;
    char name[20];
    scanf("%lld %s", &num,&name);
    while ((num / 100000000 % 10000 == 2001) || (num / 10000000 % 10000 == 2002))
    {
        int year = num / 100000000 % 10000;     //求出年份
        int month = num / 1000000 % 100;        //求出月份 
        int date = num / 10000 % 100;           //求出某日
        int sex = num / 10 % 10;                //判断性别
        //条件2001年1月24日-2002年2月11日为辛巳蛇宝男,可以写成下面这串代码
        int  flag = (((year == 2001 && month > 1) ||(year == 2002 && month < 2) || (year == 2001 && month == 1 && date <= 24) ||(year == 2002 && month == 2 && date <= 11)) && (sex % 2 != 0)) ? 1 : 0; 
        //打印观察一下
        printf("year=%d month=%d date=%d sex=%d flag=%d\n", year, month, date,sex,flag);
        //flag==1,打印YES;flag==0,打印NO
        while (flag == 1)
        {
            printf("YES\n");
            return 0;
        }
        while (flag == 0)
        {
            printf("NO\n");
            return 0;
        }
    }
    //不是2001年和2002出生的打印NO
    printf("NO\n");
    return 0;
}

img

scanf太乱了啊