word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微軟雅黑, 黑體, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255); line-height: 2;">從程序流程的角度來看,程序可以分為三種基本結構, 即順序結構、分支結構、循環結構。 這三種基
word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微軟雅黑, 黑體, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255); line-height: 2;">本結構可以組成所有的各種復雜程序。C語言提供了多種語句來實現這些程序結構。
【案例描述】
編程實現:輸入日期,輸出該日期的星期。
輸入:20201129
說明:前四位表示年,第5、6位表示月,第7、8位表示日。
輸出:2020年11月29日是星期7

【案例分析】
1、利用Zeller(蔡勒)公式,可以根據日期直接計算出星期數。
Zeller公式為:w=[c/4]-2c+y+[y/4]+[26*(m+1)/10]+d-1
其中,c為年份的前二位數,y為年份的后二位數,m為月份,d為日。[ ]表示取整數部分。w除以7求得的余數即為星期數(0為星期日,1至6為星期一至星期六)。
注意: 1、2月需換算為上年的13、14月。這時年數也需要減去1。
scanf("%4d%2d%2d",&y,&m,&d);
其中%4d表示輸入一個整數,不能超過4位。如果輸入20201129,則y=2020,m=11,d=29。
【參考代碼】
main()
{ int y,m,d,c,x;
scanf("%4d%2d%2d",&y,&m,&d);
m+=m<3?y--,12:0;
c=y/100;
x=y%100;
c=(c/4-2*c+x+x/4+26*(m+1)/10+d-1)%7;
printf("%d年%d月%d日是星期%d",y,m,d,c==0?7:c);
}

