#include <stdio.h>
void main()
{
printf("该程序求某天星期几和打印本年年历,不合法输入便自动退出:\n");
printf("请输入年 月 日:");
while(1)
{
loop:
// printf("请输入年 月 日:");
int o,p,q;
int w,y,m,d,c,yy,xingqi;
scanf("%d%d%d",&o,&p,&q); //参数对应年,月,日
if(o<0||p>12||p<0||q<0||q>31) //不合法输入判断
{
printf("输入不合法请按任意键退出\n"); //不合法则退出
break;
}
y=o;
m=p;
d=q;
if(m==1||m==2)
m=m+12;
if(m>12)
y=y-1;
yy=y%100;
c=(y/100);
w=yy+(yy/4)+(c/4)-2*c+(26*(m+1)/10)+d-1; //星期计算
xingqi=w%7;
if(xingqi<0)
xingqi=7+xingqi; //星期纠正
if(xingqi==0) printf("这天是星期天\n"); //打印星期
if(xingqi==1) printf("这天是星期一\n");
if(xingqi==2) printf("这天是星期二\n");
if(xingqi==3) printf("这天是星期三\n");
if(xingqi==4) printf("这天是星期四\n");
if(xingqi==5) printf("这天是星期五\n");
if(xingqi==6) printf("这天是星期六\n");
//printf("press any key to continue:\n");
//if((n=getchar())='\n') break;
//goto loop;
// return();
// printf("erro");
int uu ; //判
if((y%4==0&&y%100!=0)||y%400==0) //断
uu=1; //闰
else //年
uu=0;
if(uu==1) //打
printf("%d年是闰年:\n",y); //印
else //是
printf("%d年不是闰年\n",y); //否
//闰年
printf("%d年年历打印如下:\n",y); //打印年历
int i,j,k,pp;
for(i=1;i<13;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) //打印大月份
{ printf("\n %d月:\n\n",i);
printf(" 日 一 二 三 四 五 六 \n");
printf(" "); //20空格
pp=(yy+(yy/4)+(c/4)-2*c+(26*(i+1)/10))%7; //算本月1号星期几
if(pp<0)
pp=7+pp;
for(j=0;j<6*pp;j++) //1号前空空
printf(" ");
for(j=1;j<32;j++)
{
printf("%-6d",j); //%-6d为左对齐
if((pp+j)%7==0)
{ //换行判断
printf("\n");
printf("\n");
printf(" "); //转行前的空格
}
}
}
if(i==4||i==6||i==9||i==11) //打印中月份
{ printf("\n %d月:\n\n",i);
printf(" 日 一 二 三 四 五 六 \n");
printf(" ");
pp=(yy+(yy/4)+(c/4)-2*c+(26*(i+1)/10))%7;
if(pp<0)
pp=7+pp;
for(j=0;j<6*pp;j++)
printf(" ");
for(j=1;j<31;j++)
{
printf("%-6d",j);
if((pp+j)%7==0)
{
printf("\n");
printf("\n");
printf(" ");
}
}
}
if(i==2) //打印平月份
{ printf("\n %d月:\n\n",i);
printf(" 日 一 二 三 四 五 六 \n");
printf(" ");
pp=(yy+(yy/4)+(c/4)-2*c+(26*(i+1)/10))%7;
if(pp<0)
pp=7+pp;
for(j=0;j<6*pp;j++)
printf(" ");
if(uu==1)
for(j=1;j<30;j++)
{
printf("%-6d",j);
if((pp+j)%7==0)
{
printf("\n");
printf("\n");
printf(" ");
}
}
if(uu==0)
for(j=1;j<29;j++)
{
printf("%-6d",j);
if((pp+j)%7==0)
{
printf("\n");
printf("\n");
printf(" ");
}
}
}
printf("\n"); //每月打印完后换行
}
printf("\n");
//printf("press any key to continue:\n");
printf("请输入年 月 日继续:");
goto loop;
//system("PUUSE");
}
}
温馨提示:内容为网友见解,仅供参考