下面的一个随机prinf任何一年的一个月的日历,谁帮我解释一下第二段和第三段中变量的意义及其算法的意义,谢谢!
#include <stdio.h> 
int ry(int yr) //判断闰年
{ 
    if (yr%4==0&&yr%100!=0||yr%100==0&&yr%400==0) 
      return 1; 
    else 
      return 0; 
} 
int CalWkd(int yr,int mth) //第二段
{   int ds=0,i,rst,wkd; 
    int mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
    if (ry(yr)) 
      mthd[2]=29; 
    for (i=1;i<mth;i++) 
      ds+=mthd[i]; 
    ds+=1; 
    rst=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+ds; 
    wkd=rst%7; 
    return wkd; 
} 
showcld(int wkd,int mtd) //第三段
{ 
    int dt=1,i,j=0; 
    printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n"); 
    for (i=0;i<wkd;i++) 
    { 
      printf("\t"); 
      j++; 
    } 
    while (j!=7) 
    { 
        printf("%d",dt); 
        if (j<6) 
            printf("\t"); 
        else 
            printf("\n"); 
        dt++; 
        j++; 
    } 
    while (1) 
    { 
        for (j=0;j<7;j++) 
        { 
            printf("%d",dt); 
            if (j!=6) 
                printf("\t"); 
            else 
                printf("\n"); 
            if (dt!=mtd) 
                dt++; 
            else 
                return 0; 
            } 
        } 
    } 
int main() //第四段
{ 
    int yr,mth,mtd,wkd,mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
    printf("Input the Year and Month(Year-Month):"); 
    scanf("%d-%d",&yr,&mth); 
    if (yr<0||mth<1||mth>12) 
        return 0; 
    if (ry(yr)) 
        mthd[2]=29; 
    mtd=mthd[mth]; 
    wkd=CalWkd(yr,mth); 
    showcld(wkd,mtd); 
    return 0; 
}  
 
 
 



											
	    

	