问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写程序打印任意年份的日历

发布网友 发布时间:2022-05-03 08:49

我来回答

3个回答

热心网友 时间:2023-10-17 11:52

看要这样不? 下图:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

int qq(int x,int t)

{

 int i=0,p,s=365,y,j,b,k=1,h=1,u=0;

    int a[13];

    FILE *fp;

    fp=fopen("tai.txt","a+");

 i=0;k=1;h=1;u=0;

     printf("\t^^^^^^^^^^^^^\t%d年%d月份\t^^^^^^^^^^^^^^^^\n\n",x,t);

        fputs("\t^^^^^^^^^^^^^^^^",fp);

  fputc(x/1000+48,fp);

  fputc(x/100%10+48,fp);

  fputc(x/10%10+48,fp);

  fputc(x%10+48,fp);

  fputs("年",fp);

  fputc(t/10+48,fp);

  fputc(t%10+48,fp);

  fputs("月份^^^^^^^^^^^^^^^^^^^^^^^",fp);

  fputs("\n\n",fp);

    {for(p=1900;p<=x;p++)

        if(p%4==0&&p%100!=0||p%400==0) i++;

        if(x%4==0&&x%100!=0||x%400==0) s=i*366+(x-1900-i)*365;

        else s=i*366+(x-1900-i)*365+1;

      printf("\t日\t一\t二\t三\t四\t五\t六\n");

   fputs("\t日\t一\t二\t三\t四\t五\t六\n",fp);

      for(i=1;i<=t;i++) 

     {if(i==2||i==4||i==6||i==8||i==9||i==11) u+=31;

      if(i==5||i==7||i==10||i==12) u+=30;

      if(i==3){if(x%4==0&&x%100!=0||x%400==0) u+=29;

        else u+=28;};

     };

      for(i=1;i<=12;i++) 

     {if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a[i]=31;

      if(i==4||i==6||i==9||i==11) a[i]=30;

      if(i==2){if(x%4==0&&x%100!=0||x%400==0) a[i]=29;

        else a[i]=28;};

     };

      b=a[t];

      y=(s%7+u)%7;

      for(i=1;i<=6;i++)

     {

    for(j=1;j<=7;j++)

    {

     if(h<=y) {printf("\t");fputc('\t',fp);};

     if(h>y)  {if(k<=b) {printf("\t%d",k); fputc('\t',fp); if (k>9) fputc(k/10+48,fp),fputc(k%10+48,fp) ; else fputc(k+48,fp) ; };

        if(k==b+1) {printf("\n");fputc('\n',fp);};

              k++;  };

           h++;

    };

      printf("\n");fputs("\n",fp);

     };

    };

    printf("\t***************************************************\n\n");

 fputs("\t***************************************************",fp);

 fputs("\n\n",fp);

 fclose(fp); 

 return (0);

}

main()

{

    int x,t,q,e,i,c,cc,xx,tt;

 float p,pp;

 FILE *fp; 

 if((fp=fopen("tai.txt","w"))==NULL)

 {printf("error!");

 exit(0);

 }

    fclose(fp);

do{

    printf("请输入你要查询的年份和月份,\n");

    printf("输入格式为:“年+空格+月+Enter”。(年份 >=1900)");

    printf("(若想显示全年,则输“年+空格+0+Enter”)。比如“2012+空格+0+Enter”)\n");

 printf("(若想输出XXXX到xxxx年的全年,则输“年+空格+年+Enter”)。比如“2010+空格+2012+Enter”)\n");

 printf("(若想显示xxxx年的前或后x年,则输“年+空格+.x+Enter”)。比如2010的前3年,则输入“2010+空格+“-.3”+Enter”)\n");

 printf("(若想显示xxxx年的m月前或后x个月,则输“年+空格+m.x+Enter”)。比如2010的5后3个月,则输入“2010+空格+“+5.3”+Enter”)\n");

    scanf("%d%f",&x,&p);

    pp=p*10;

 c=(int)pp;

 cc=c%10;

    xx=x;

 t=abs((int)p);

 tt=t;

 if(x<1900) {printf("输入不合要求,请重新输入!!");q=1;}

    

    else if(x>=1900&&(t>0&&t<=12)&&cc==0)//输出指定的年月份。

 { qq(x,t);}

    

    else if(x>=1900&&t==0&&cc==0)//输出指定的整年。

 { for(t=1;t<=12;t++)

      qq(x,t);}

    else if(x>=1900&&t>=1900)//输出xxxx年到xxxx年的整年。

 { for(i=xx;i<=tt;i++,x++)

           for(t=1;t<=12;t++)

      qq(x,t);}

    else if(x>=1900&&p<1.0&&tt==0)//输出xxxx年的前或后x年。

 {

     if(cc+x<1900&&tt==0)

   printf(" 输入的前年份过多。");

        else if(cc>0)

  {for(i=0;i<=cc;i++,x++)

         for(t=1;t<=12;t++)

        qq(x,t);}

     else {for(i=cc;i<=0;i++,x--)

           for(t=1;t<=12;t++)

     qq(x,t);}

 }

 else if(x>=1900&&t<=12&&t>=1&&cc!=0)//输出xxxx年的m月前或后x个月。“呵呵 你自己想象“让前或后x个月问任何数””

 { 

   if(cc>0)

   {for(tt=0;tt<=cc;tt++,t++)

   {  if(t>12) qq(x+1,t-12);

      else qq(x,t);}}

   else{for(tt=0;tt>=cc;tt--,t--)

   {  if(t<1) qq(x-1,t+12);

      else qq(x,t);}}

 }

  

}

    while(q==1);

scanf("%d",&e);

if(e)exit(0);

}

这是我的一个朋友写的!

参考一下!

热心网友 时间:2023-10-17 11:52

#include <stdio.h>
#include <conio.h>
int main()
{
int year=0;
int month=0;
int dw=0;
int sumDays=0;
int currMonthDays=0;
int i,flag=0,temp;
//scanf("%d%d",&year,&month);
printf("输入年份:\n");
scanf("%d",&year);

for(i=1900;i<year;i++)
if((i%4==0&&i%100!=0)||i%400==0)
sumDays+=366;
else
sumDays+=365;

if((year%4==0&&year%100!=0)||year%400==0)
flag=1;//闰年置1

temp=sumDays;
for(month=1;month<13;month++)

{
for( i=1;i<=month;i++)
{
switch(i)
{

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:

if(i<month)
sumDays+=31;
else
currMonthDays=31;

break;

case 4:
case 6:
case 9:
case 11:

if(i<month)
sumDays+=30;
else
currMonthDays=30;

break;

case 2:
if(flag==1)//是闰年
{ if(i<month)
sumDays+=29;
else
currMonthDays=29;
}
else
{
if(i<month)
sumDays+=28;
else
currMonthDays=28;
}

break;

}

}

printf("%d月\n",month);
//dw=(sumDays+1)%7;//星期日在前
dw=(sumDays)%7;//这里调整星期,星期日在后

//printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
printf("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\n");

for(i=1;i<=dw;i++){

printf("\t");

}

for(i=1;i<=currMonthDays;i++){

printf("%d\t",i);

if((i+dw)%7==0){
printf("\n");
}
}
printf("\n\n");
//重新清零
dw=0;
sumDays=temp;
currMonthDays=0;

}
getch();
return 0;
}

热心网友 时间:2023-10-17 11:53

#include <stdio.h>

int JgYr(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 (JgYr(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 (JgYr(yr))
mthd[2]=29;
mtd=mthd[mth];
wkd=CalWkd(yr,mth);
showcld(wkd,mtd);
return 0;
}

热心网友 时间:2023-11-08 12:50

看要这样不? 下图:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

int qq(int x,int t)

{

 int i=0,p,s=365,y,j,b,k=1,h=1,u=0;

    int a[13];

    FILE *fp;

    fp=fopen("tai.txt","a+");

 i=0;k=1;h=1;u=0;

     printf("\t^^^^^^^^^^^^^\t%d年%d月份\t^^^^^^^^^^^^^^^^\n\n",x,t);

        fputs("\t^^^^^^^^^^^^^^^^",fp);

  fputc(x/1000+48,fp);

  fputc(x/100%10+48,fp);

  fputc(x/10%10+48,fp);

  fputc(x%10+48,fp);

  fputs("年",fp);

  fputc(t/10+48,fp);

  fputc(t%10+48,fp);

  fputs("月份^^^^^^^^^^^^^^^^^^^^^^^",fp);

  fputs("\n\n",fp);

    {for(p=1900;p<=x;p++)

        if(p%4==0&&p%100!=0||p%400==0) i++;

        if(x%4==0&&x%100!=0||x%400==0) s=i*366+(x-1900-i)*365;

        else s=i*366+(x-1900-i)*365+1;

      printf("\t日\t一\t二\t三\t四\t五\t六\n");

   fputs("\t日\t一\t二\t三\t四\t五\t六\n",fp);

      for(i=1;i<=t;i++) 

     {if(i==2||i==4||i==6||i==8||i==9||i==11) u+=31;

      if(i==5||i==7||i==10||i==12) u+=30;

      if(i==3){if(x%4==0&&x%100!=0||x%400==0) u+=29;

        else u+=28;};

     };

      for(i=1;i<=12;i++) 

     {if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a[i]=31;

      if(i==4||i==6||i==9||i==11) a[i]=30;

      if(i==2){if(x%4==0&&x%100!=0||x%400==0) a[i]=29;

        else a[i]=28;};

     };

      b=a[t];

      y=(s%7+u)%7;

      for(i=1;i<=6;i++)

     {

    for(j=1;j<=7;j++)

    {

     if(h<=y) {printf("\t");fputc('\t',fp);};

     if(h>y)  {if(k<=b) {printf("\t%d",k); fputc('\t',fp); if (k>9) fputc(k/10+48,fp),fputc(k%10+48,fp) ; else fputc(k+48,fp) ; };

        if(k==b+1) {printf("\n");fputc('\n',fp);};

              k++;  };

           h++;

    };

      printf("\n");fputs("\n",fp);

     };

    };

    printf("\t***************************************************\n\n");

 fputs("\t***************************************************",fp);

 fputs("\n\n",fp);

 fclose(fp); 

 return (0);

}

main()

{

    int x,t,q,e,i,c,cc,xx,tt;

 float p,pp;

 FILE *fp; 

 if((fp=fopen("tai.txt","w"))==NULL)

 {printf("error!");

 exit(0);

 }

    fclose(fp);

do{

    printf("请输入你要查询的年份和月份,\n");

    printf("输入格式为:“年+空格+月+Enter”。(年份 >=1900)");

    printf("(若想显示全年,则输“年+空格+0+Enter”)。比如“2012+空格+0+Enter”)\n");

 printf("(若想输出XXXX到xxxx年的全年,则输“年+空格+年+Enter”)。比如“2010+空格+2012+Enter”)\n");

 printf("(若想显示xxxx年的前或后x年,则输“年+空格+.x+Enter”)。比如2010的前3年,则输入“2010+空格+“-.3”+Enter”)\n");

 printf("(若想显示xxxx年的m月前或后x个月,则输“年+空格+m.x+Enter”)。比如2010的5后3个月,则输入“2010+空格+“+5.3”+Enter”)\n");

    scanf("%d%f",&x,&p);

    pp=p*10;

 c=(int)pp;

 cc=c%10;

    xx=x;

 t=abs((int)p);

 tt=t;

 if(x<1900) {printf("输入不合要求,请重新输入!!");q=1;}

    

    else if(x>=1900&&(t>0&&t<=12)&&cc==0)//输出指定的年月份。

 { qq(x,t);}

    

    else if(x>=1900&&t==0&&cc==0)//输出指定的整年。

 { for(t=1;t<=12;t++)

      qq(x,t);}

    else if(x>=1900&&t>=1900)//输出xxxx年到xxxx年的整年。

 { for(i=xx;i<=tt;i++,x++)

           for(t=1;t<=12;t++)

      qq(x,t);}

    else if(x>=1900&&p<1.0&&tt==0)//输出xxxx年的前或后x年。

 {

     if(cc+x<1900&&tt==0)

   printf(" 输入的前年份过多。");

        else if(cc>0)

  {for(i=0;i<=cc;i++,x++)

         for(t=1;t<=12;t++)

        qq(x,t);}

     else {for(i=cc;i<=0;i++,x--)

           for(t=1;t<=12;t++)

     qq(x,t);}

 }

 else if(x>=1900&&t<=12&&t>=1&&cc!=0)//输出xxxx年的m月前或后x个月。“呵呵 你自己想象“让前或后x个月问任何数””

 { 

   if(cc>0)

   {for(tt=0;tt<=cc;tt++,t++)

   {  if(t>12) qq(x+1,t-12);

      else qq(x,t);}}

   else{for(tt=0;tt>=cc;tt--,t--)

   {  if(t<1) qq(x-1,t+12);

      else qq(x,t);}}

 }

  

}

    while(q==1);

scanf("%d",&e);

if(e)exit(0);

}

这是我的一个朋友写的!

参考一下!

热心网友 时间:2023-10-17 11:52

看要这样不? 下图:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

int qq(int x,int t)

{

 int i=0,p,s=365,y,j,b,k=1,h=1,u=0;

    int a[13];

    FILE *fp;

    fp=fopen("tai.txt","a+");

 i=0;k=1;h=1;u=0;

     printf("\t^^^^^^^^^^^^^\t%d年%d月份\t^^^^^^^^^^^^^^^^\n\n",x,t);

        fputs("\t^^^^^^^^^^^^^^^^",fp);

  fputc(x/1000+48,fp);

  fputc(x/100%10+48,fp);

  fputc(x/10%10+48,fp);

  fputc(x%10+48,fp);

  fputs("年",fp);

  fputc(t/10+48,fp);

  fputc(t%10+48,fp);

  fputs("月份^^^^^^^^^^^^^^^^^^^^^^^",fp);

  fputs("\n\n",fp);

    {for(p=1900;p<=x;p++)

        if(p%4==0&&p%100!=0||p%400==0) i++;

        if(x%4==0&&x%100!=0||x%400==0) s=i*366+(x-1900-i)*365;

        else s=i*366+(x-1900-i)*365+1;

      printf("\t日\t一\t二\t三\t四\t五\t六\n");

   fputs("\t日\t一\t二\t三\t四\t五\t六\n",fp);

      for(i=1;i<=t;i++) 

     {if(i==2||i==4||i==6||i==8||i==9||i==11) u+=31;

      if(i==5||i==7||i==10||i==12) u+=30;

      if(i==3){if(x%4==0&&x%100!=0||x%400==0) u+=29;

        else u+=28;};

     };

      for(i=1;i<=12;i++) 

     {if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a[i]=31;

      if(i==4||i==6||i==9||i==11) a[i]=30;

      if(i==2){if(x%4==0&&x%100!=0||x%400==0) a[i]=29;

        else a[i]=28;};

     };

      b=a[t];

      y=(s%7+u)%7;

      for(i=1;i<=6;i++)

     {

    for(j=1;j<=7;j++)

    {

     if(h<=y) {printf("\t");fputc('\t',fp);};

     if(h>y)  {if(k<=b) {printf("\t%d",k); fputc('\t',fp); if (k>9) fputc(k/10+48,fp),fputc(k%10+48,fp) ; else fputc(k+48,fp) ; };

        if(k==b+1) {printf("\n");fputc('\n',fp);};

              k++;  };

           h++;

    };

      printf("\n");fputs("\n",fp);

     };

    };

    printf("\t***************************************************\n\n");

 fputs("\t***************************************************",fp);

 fputs("\n\n",fp);

 fclose(fp); 

 return (0);

}

main()

{

    int x,t,q,e,i,c,cc,xx,tt;

 float p,pp;

 FILE *fp; 

 if((fp=fopen("tai.txt","w"))==NULL)

 {printf("error!");

 exit(0);

 }

    fclose(fp);

do{

    printf("请输入你要查询的年份和月份,\n");

    printf("输入格式为:“年+空格+月+Enter”。(年份 >=1900)");

    printf("(若想显示全年,则输“年+空格+0+Enter”)。比如“2012+空格+0+Enter”)\n");

 printf("(若想输出XXXX到xxxx年的全年,则输“年+空格+年+Enter”)。比如“2010+空格+2012+Enter”)\n");

 printf("(若想显示xxxx年的前或后x年,则输“年+空格+.x+Enter”)。比如2010的前3年,则输入“2010+空格+“-.3”+Enter”)\n");

 printf("(若想显示xxxx年的m月前或后x个月,则输“年+空格+m.x+Enter”)。比如2010的5后3个月,则输入“2010+空格+“+5.3”+Enter”)\n");

    scanf("%d%f",&x,&p);

    pp=p*10;

 c=(int)pp;

 cc=c%10;

    xx=x;

 t=abs((int)p);

 tt=t;

 if(x<1900) {printf("输入不合要求,请重新输入!!");q=1;}

    

    else if(x>=1900&&(t>0&&t<=12)&&cc==0)//输出指定的年月份。

 { qq(x,t);}

    

    else if(x>=1900&&t==0&&cc==0)//输出指定的整年。

 { for(t=1;t<=12;t++)

      qq(x,t);}

    else if(x>=1900&&t>=1900)//输出xxxx年到xxxx年的整年。

 { for(i=xx;i<=tt;i++,x++)

           for(t=1;t<=12;t++)

      qq(x,t);}

    else if(x>=1900&&p<1.0&&tt==0)//输出xxxx年的前或后x年。

 {

     if(cc+x<1900&&tt==0)

   printf(" 输入的前年份过多。");

        else if(cc>0)

  {for(i=0;i<=cc;i++,x++)

         for(t=1;t<=12;t++)

        qq(x,t);}

     else {for(i=cc;i<=0;i++,x--)

           for(t=1;t<=12;t++)

     qq(x,t);}

 }

 else if(x>=1900&&t<=12&&t>=1&&cc!=0)//输出xxxx年的m月前或后x个月。“呵呵 你自己想象“让前或后x个月问任何数””

 { 

   if(cc>0)

   {for(tt=0;tt<=cc;tt++,t++)

   {  if(t>12) qq(x+1,t-12);

      else qq(x,t);}}

   else{for(tt=0;tt>=cc;tt--,t--)

   {  if(t<1) qq(x-1,t+12);

      else qq(x,t);}}

 }

  

}

    while(q==1);

scanf("%d",&e);

if(e)exit(0);

}

这是我的一个朋友写的!

参考一下!

热心网友 时间:2023-10-17 11:52

#include <stdio.h>
#include <conio.h>
int main()
{
int year=0;
int month=0;
int dw=0;
int sumDays=0;
int currMonthDays=0;
int i,flag=0,temp;
//scanf("%d%d",&year,&month);
printf("输入年份:\n");
scanf("%d",&year);

for(i=1900;i<year;i++)
if((i%4==0&&i%100!=0)||i%400==0)
sumDays+=366;
else
sumDays+=365;

if((year%4==0&&year%100!=0)||year%400==0)
flag=1;//闰年置1

temp=sumDays;
for(month=1;month<13;month++)

{
for( i=1;i<=month;i++)
{
switch(i)
{

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:

if(i<month)
sumDays+=31;
else
currMonthDays=31;

break;

case 4:
case 6:
case 9:
case 11:

if(i<month)
sumDays+=30;
else
currMonthDays=30;

break;

case 2:
if(flag==1)//是闰年
{ if(i<month)
sumDays+=29;
else
currMonthDays=29;
}
else
{
if(i<month)
sumDays+=28;
else
currMonthDays=28;
}

break;

}

}

printf("%d月\n",month);
//dw=(sumDays+1)%7;//星期日在前
dw=(sumDays)%7;//这里调整星期,星期日在后

//printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
printf("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\n");

for(i=1;i<=dw;i++){

printf("\t");

}

for(i=1;i<=currMonthDays;i++){

printf("%d\t",i);

if((i+dw)%7==0){
printf("\n");
}
}
printf("\n\n");
//重新清零
dw=0;
sumDays=temp;
currMonthDays=0;

}
getch();
return 0;
}

热心网友 时间:2023-10-17 11:53

#include <stdio.h>

int JgYr(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 (JgYr(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 (JgYr(yr))
mthd[2]=29;
mtd=mthd[mth];
wkd=CalWkd(yr,mth);
showcld(wkd,mtd);
return 0;
}

热心网友 时间:2023-11-08 12:50

#include <stdio.h>
#include <conio.h>
int main()
{
int year=0;
int month=0;
int dw=0;
int sumDays=0;
int currMonthDays=0;
int i,flag=0,temp;
//scanf("%d%d",&year,&month);
printf("输入年份:\n");
scanf("%d",&year);

for(i=1900;i<year;i++)
if((i%4==0&&i%100!=0)||i%400==0)
sumDays+=366;
else
sumDays+=365;

if((year%4==0&&year%100!=0)||year%400==0)
flag=1;//闰年置1

temp=sumDays;
for(month=1;month<13;month++)

{
for( i=1;i<=month;i++)
{
switch(i)
{

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:

if(i<month)
sumDays+=31;
else
currMonthDays=31;

break;

case 4:
case 6:
case 9:
case 11:

if(i<month)
sumDays+=30;
else
currMonthDays=30;

break;

case 2:
if(flag==1)//是闰年
{ if(i<month)
sumDays+=29;
else
currMonthDays=29;
}
else
{
if(i<month)
sumDays+=28;
else
currMonthDays=28;
}

break;

}

}

printf("%d月\n",month);
//dw=(sumDays+1)%7;//星期日在前
dw=(sumDays)%7;//这里调整星期,星期日在后

//printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
printf("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\n");

for(i=1;i<=dw;i++){

printf("\t");

}

for(i=1;i<=currMonthDays;i++){

printf("%d\t",i);

if((i+dw)%7==0){
printf("\n");
}
}
printf("\n\n");
//重新清零
dw=0;
sumDays=temp;
currMonthDays=0;

}
getch();
return 0;
}

热心网友 时间:2023-11-08 12:51

#include <stdio.h>

int JgYr(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 (JgYr(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 (JgYr(yr))
mthd[2]=29;
mtd=mthd[mth];
wkd=CalWkd(yr,mth);
showcld(wkd,mtd);
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
下载了优酷播放器iku免登录版,安装在没联网的电脑上。查看不了本地的... 播放FLV的几个问题在线等 劲舞团真的有那么好玩吗? 为什么别人说劲舞团是世界上最淫荡的游戏.. 劲舞团好玩吗?? 030221 1020 060414 2168 060417 这几组数是什么意思啊!有知道的大哥请... ...分签约短信服务-【广东农信】”是什么意思? 2168是什么意思爱情 事业单位面试成绩79分算好的吗 事业编面试成绩76分算高分吗 大赢家数学(北)七年级上 第五章一元一次方程 5.3 日历中的方程 的答案谁有啊? 怎么弄装饰画? 365桌面日历V3.9.1和5.3哪个好? 布糊画的制作 初一5.3日历中的方程 都用方程解,速度要快,急啊, 5.3日历中的方程 5.3我变胖了 那就只写答案吧在5.30我给 急急急急 我想知道加工厂里生产的缝纫机什么牌子的又实惠又好用的?谢谢 电脑平车缝纫机,是中捷的好,还是杰克的好,帮忙推荐一下,谢谢 平车什么牌子最好,多少钱一台 电动平车的品牌有哪些? 哪家的电动平板车质量比较好? 国产平车有哪些牌子 平车缝纫机哪个牌子好 挂闪电标的面包车是什么车多少钱 车标是左边是一个三角右边是一个闪电,这是什么车? 娃娃菜怎么做好吃 清淡 泡椒娃娃菜怎么做 我只有袋装的小米椒和蒜姜 孕妇快生了右眼跳是什么预兆 优活手环的屏幕锁了如何截屏 动哈智能手环的遥控拍照是怎么显示的? 基于单片机的数字日历时钟 装饰画拼贴可用哪些材料 快递服务国家标准的快递服务第三部分:服务环节 Ubuntu 17.04更新了哪些内容 百分百38度手机怎么样? 小兵日历为什么卸载不了 请按照我的要求给我推荐一部手机 二级建造师网上报名 89C51单片机有几个中断源?它们的中断标志位分别是什么? 吃山药用削皮吗 AT89S51单片机简介 8031单片机的简介 是谁在召唤我 ’是谁在呼唤我,投入神秘战斗’歌词 《土地的誓言》原文 我抛弃了所有的忧伤与疑虑,去追逐那无家的潮水,因为那永恒的异乡人在召唤我,他正沿着这条路走来。 故乡有一种声音在召唤我 看我的,军歌歌词,谁知道,要完整版的 仿写《土地的誓言》第一段第二部分“这时我听到故乡在召唤我……终有一天它们要汇合在” 三国杀里面什么人物的台词&quot;应龙他在召唤我&quot;