#include<stdio.h>
int main()
{
int n,i,j,k,first,max;
int y[10],m[10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&y[i],&m[i]);
}
for(i=0;i<n;i++)
{
printf(" %d年%.2d月\n",y[i],m[i]);
printf("\n");
printf(" 日 一 二 三 四 五 六\n");
if(y[i]%4==0&&y[i]%100!=0&&y[i]%400==0)
{
if(m[i]==1||m[i]==3||m[i]==5||m[i]==7||m[i]==8||m[i]==10||m[i]==12)
max=31;
else if(m[i]==2)
max=29;
else
max=30;
}
else
{
if(m[i]==1||m[i]==3||m[i]==5||m[i]==7||m[i]==8||m[i]==10||m[i]==12)
max=31;
else if(m[i]==2)
max=28;
else
max=30;
}
first=(2+2*m[i]+3*(m[i]+1)/5+y[i]+y[i]/4-y[i]/100+y[i]/400)%7;
if(first==0)first=7;
if(first==7)
{
for(k=1;k<=3*first;k++)
{
printf(" ");
}
printf(" ");
}
else
{
for(k=1;k<=3*first;k++)
{
printf(" ");
}
}
for(j=1;j<=max;j++)
{
printf("%3d",j);
if((j+first)%7==0)
{
printf("\n");
}
if(j==max)
{
printf("\n");
}
}
printf("\n");
}
return 0;
}


uj5u.com熱心網友回復:
你的演算法肯定是有問題的
輸入一個1 2006 2 你自己看看會出來什么
if (first==0 ) first = 7;
uj5u.com熱心網友回復:
謝謝大佬,我去康康轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133561.html
標籤:C語言
上一篇:【求助】回圈陳述句不按理想的運行
下一篇:求助大佬一新手題
