求大佬赐教(刚用这个论坛没有c币可以悬赏抱歉)

给定某年某月某日,将其转换成这一年的第几天并输出(系统没有报错就是结果是个很大的负值)图片图片

你的输入是逗号分割么?一个很大的负数明显是有变量没有初始化。
另外代码有两个bug
(1)闰年的判断算法错了
(2)pd1的return num如果是循环内,循环忘记打上括号,否则不要缩进。

贴子的图片补充。。。。。。。。图片图片

 #include <stdio.h>
#include <process.h>
void main()
{
    int y,m,d,days,flag;
    flag=0;
    scanf("%d%d%d",&y,&m,&d);
    if(y%400==0||y%4==0&&y%100!=0)
        flag=1;
    if (m<1||m>12)
    {
        printf("输入月份有错\n");
        exit(0);
    }
    else
    {
        if (!flag&&m==2&&(d<1||d>28))
        {
            printf("输入日期有错\n");exit(0);}
        if (flag&&m==2&&(d<1||d>29))
        {
            printf("输入日期有错\n");exit(0);}
        if ((m==4||m==9||m==11)&&(d<1||d>30))
        {
            printf("输入日期有错\n");exit(0);}
        if ((m==1||m==3||m==5||m==7||m==8||m==10)&&(d<1||d>31))
        {
            printf("输入日期有错\n");exit(0);}
        switch(m)
        {
        case 1:days=0;break;
        case 2:days=31;break;
        case 3:days=31+28;break;
        case 4:days=31+28+31;break;
        case 5:days=31+28+31+30;break;
        case 6:days=31+28+31+30+31;break;
        case 7:days=31+28+31+30+31+30;break;
        case 8:days=31+28+31+30+31+30+31;break;
        case 9:days=31+28+31+30+31+30+31+31;break;
        case 10:days=31+28+31+30+31+30+31+31+30;break;
        case 11:days=31+28+31+30+31+30+31+31+30+31;break;
        case 12:days=31+28+31+30+31+30+31+31+30+31+30;break;
        };
        days=days+d;
        if (m>2)
            days=days+flag;
        printf("%d%d%d%d,y,m,d,days");
    }
}

为啥图片看不到?。。。。。

没时间仔细看,就提一点,逻辑有错误,闰年的判定方式是,整除4并且不能整除100,或者整除400,你这就整除4是不行的