編程式實作:輸入一個年份,求出這一年的1月1日是星期幾,要求使用全中文形式(如“星期六”)輸出,并限定不能使用回圈結構。假定從公元第一天開始,就實施格里高利歷法,并且公元1年1月1日為星期一。格里高利歷法的置閏規則是400年97閏,也可以概括為:四閏百不閏,四百閏。大佬們,能告訴我怎么錯了么?
# include <stdio.h>
int main()
{
int year,t,s,day;
scanf("%d",&year);
t=(year-1)/4;
s=(year-1)%4;
switch(s)
{
case 0:day=t*(365*3+366);break;
case 1:day=t*(365*3+366)+365;break;
case 2:day=t*(365*3+366)+365*2;break;
case 3:day=t*(365*3+366)+365*3;break;
}
int i;
i=day%7;
switch(i)
{
case 0:printf("星期一\n");break;
case 1:printf("星期二\n");break;
case 2:printf("星期三\n");break;
case 3:printf("星期四\n");break;
case 4:printf("星期五\n");break;
case 5:printf("星期六\n");break;
case 6:printf("星期天\n");break;
}
return 0;
}
uj5u.com熱心網友回復:
有測驗用例嗎?發一下,不知道你說的哪里錯是測驗出錯,還是其他錯誤?uj5u.com熱心網友回復:
# include <stdio.h>
int main()
{
int year,t,s,day;
scanf("%d",&year);
t=(year-1)/4;
s=(year-1)%4;
switch(s)
{
case 0:day=t*(365*3+366);break;
case 1:day=t*(365*3+366)+365;break;
case 2:day=t*(365*3+366)+365*2;break;
case 3:day=t*(365*3+366)+365*3;break;
}
int i;
i=day%7;
switch(i)
{
case 0:printf("星期天\n");break;
case 1:printf("星期一\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("星期五\n");break;
case 6:printf("星期六\n");break;
}
return 0;
}
供參考~
case 0改成星期天,其他依次修改一下i值對應的星期值就可以了~
case0不就是7%7得0嗎?怎么把0改成星期一了呢?
uj5u.com熱心網友回復:
你自己不都說了么,四閏百不閏,四百閏,你把100,200,300,500,600,。。。這些給當成閏年再算,結果肯定有問題啊轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/202966.html
標籤:C語言
