用蔡勒公式即可:
#include?<stdio.h>
int?main?()
{
int?y,?m,?d,?c,?w;
printf?("輸入年?月?日(空格間隔):");
scanf?("%d?%d?%d",?&y,?&m,?&d);
if?(m?==1?||?m?==?2)?
{?//判斷月份是否為1或2y--;m?+=?12;}
c?=?y?/?100;
y?=?y?-?c?*?100;
w?=?(c?/?4)?-?2?*?c?+?(y?+?y?/?4)?+?(13?*?(m?+?1)?/?5)?+?d?-?1;
while?(w?<?0)?w?+=?7;
w?%=?7;
if?(w?==?0)?printf?("星期日");
else?printf?("星期%d",?w);
return?0;
}?
方法二:
#include?
void main ()
{
int y,m,d,c,s,w;
printf("請輸入8位年月日,以空格隔開:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31 d;
else if (m==3) c=31 28 d;
else if (m==4) c=31 28 31 d;
else if (m==5) c=31 28 31 30 d;
else if (m==6) c=31 28 31 30 31 d;
else if (m==7) c=31 28 31 30 31 30 d;
else if (m==8) c=31 28 31 30 31 30 31 d;
else if (m==9) c=31 28 31 30 31 30 31 31 d;
else if (m==10) c=31 28 31 30 31 30 31 31 30 d;
else if (m==11) c=31 28 31 30 31 30 31 31 30 31 d;
else if (m==12) c=31 28 31 30 31 30 31 31 30 31 30 d;
if (m>2)
{if (y0==0) {if (y@0==0) c=c 1;}
else if (y%4==0) c=c 1;}
s=(y-1)*365 (y-1)/4-(y-1)/100 (y-1)/400 c;
w=s%7;
switch (w)
{
case 0: printf("星期日");break;
case 1: printf("星期壹");break;
case 2: printf("星期二");break;
case 3: printf("星期三");break;
case 4: printf("星期四");break;
case 5: printf("星期五");break;
case 6: printf("星期六");break;
printf("
");
}
}
擴展資料:
C語言日期函數,日期處理函數:
定義壹個表示日期的結構體類型,再分別定義函數完成下列功能:計算某壹天是對應年的第幾天,這壹年壹***多少天;計算兩個日期之間相隔的天數。兩個日期由鍵盤輸入。
算法思想:
設定結構體類型表示日期類型名為 Date,利用 typedef 將其定義為日期型類型名,有三個整型類型的成員分別表示年、月、日。
設定函數計算輸入的日期是這壹年的第幾天。函數的形參為日期型變量,函數體中設定整型數組存放每個月的天數,二月份的天數為 28 天。
設定函數判斷年份是否為閏年以決定二月份的天數。根據輸入的日期月份,在數組中將相應的月份天數求和,假日曰期即為天數。
設定函數完成兩個日期的比較,比較形參 d 和 s 兩個日期的大小。首先比較年,同年的比較月,同月的比較日。變量 start 保存輸入的小的日期年份,end 保存輸入日期大的年份,然後計算兩個日期之間的天數。
程序由 6 個函數構成,yearday() 函數計算某年的天數,monthday() 函數計算某年二月份的天數,dayofyeaK() 函數計算某日期是某年的第幾天。
cmpdate() 函數比較兩個日期的大小,interday() 函數計算兩個日期之間的天數。
dayofyear() 函數調用 monthday() 函數,interday() 函數調用 cmpdate() 函數。
yearday() 函數、dayofyear() 函數;主函數調用 yearday() 函數、dayofyear() 函數、interday() 函數。