帮我看看哪里错了,然后求一个更简便的方法

img

img

img

img

img


8月是31天,所以后面的日子都错了

#include <stdio.h>

int main () {
    char p[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    char r[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
    int year,mouth,day,m,n,i,j;
    scanf("%d%d%d",&year,&mouth,&day);
    if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
        for (i=1;i<mouth;i++) {
            m += r[i];
        }
    } else {
        for (j=1;j<mouth;j++) {
            m += p[j];
        }
    }
       n = m + day;
       printf("%d",n);
    
    return 0;
}