#include "stdio.h" int DayOfWeek(int Y, int M, int D){ if(M<3){Y--; M+=12;} return(Y+Y/4-Y/100+Y/400+(13*M+8)/5+D) %7; } void testDayOfWeek(){ int Y, M, D;char DStr[7][4]={"日","月","火","水","木","金","土"}; printf("\n**曜日計算です。日付をYYYY/MM/DDの形式で入力して下さい"); printf("\n 日付入力>"); scanf("%d/%d/%d", &Y,&M,&D); while(Y>0) { printf(" 曜日計算 %d/%d/%d(%s)", Y, M, D, DStr[DayOfWeek(Y, M, D)]); printf("\n 日付入力>"); scanf("%d/%d/%d", &Y,&M,&D); } } int leapYear(int Y){//閏年のチェック return !((Y%400)&&!(Y % 100)||(Y % 4)); } void testLeapYear(){//閏年かどうか int Y; char DStr[2][16]={"閏年でない","閏年である"}; printf("\n**閏年判定です。西暦年を 4 桁の数字で入力して下さい"); printf("\n 年入力>"); scanf("%d", &Y); while(Y>0) { printf(" 判定(%s)", DStr[leapYear(Y)]); printf("\n 年入力>"); scanf("%d", &Y); } } int Mdays(int Y,int M){ if(M==2) return ( 28 + leapYear(Y)); if(M<8) return ( 30 + (M % 2) ); return ( 31 - (M % 2) ); } void testMdays(){ int Y, M; printf("\n**月の日数計算です。年月をYYYY/MMの形式で入力して下さい"); printf("\n 年月入力>"); scanf("%d/%d", &Y,&M); while(Y>0) { printf(" 日数計算 %d/%d(%d)", Y, M, Mdays(Y,M)); printf("\n 年月入力>"); scanf("%d/%d", &Y,&M); } } void testCalender(){ int Y, M; printf("\n**暦を表示します。年月をYYYY/MMの形式で入力して下さい"); printf("\n\n 年月入力>"); scanf("%d/%d", &Y,&M); while(Y!=0){ printf("\n 日 月 火 水 木 金 土\n");// 曜日の表示 int ist=DayOfWeek(Y, M, 1), Days=Mdays(Y,M), j=0; for(int i=0; i"); scanf("%d/%d", &Y,&M); } } int main(){ //testDayOfWeek(); //testLeapYear(); //testMdays(); testCalender(); return 0; }