#include <stdio.h>
/* 曜日の列挙型の宣言 */
enum week {SUN, MON, TUE, WED, THU, FRI, SAT};
enum week youbi( int y, int m, int d );
int main( void )
{
int yy, mm, dd;
enum week w;
printf( "西暦を入力しなさい" );
scanf( "%d", &yy );
printf( "月を入力しなさい" );
scanf( "%d", &mm );
printf( "日を入力しなさい" );
scanf( "%d", &dd );
/* 曜日の算出 */
w = youbi( yy, mm, dd );
printf( "%d年%d月%d日は", yy, mm, dd );
switch( w ) {
case SUN:
printf( "日曜日です\n" );
break;
case MON:
printf( "月曜日です\n" );
break;
case TUE:
printf( "火曜日です\n" );
break;
case WED:
printf( "水曜日です\n" );
break;
case THU:
printf( "木曜日です\n" );
break;
case FRI:
printf( "金曜日です\n" );
break;
case SAT:
printf( "土曜日です\n" );
break;
default:
printf( "エラーです\n" );
}
return 0;
}
/*** 曜日取得関数 ***/
enum week youbi( int y, int m, int d )
{
int w;
if( m == 1 || m == 2 ) {
y = y - 1;
m = m + 12;
}
/* Zellerの公式 */
w = ( 5 * y/4 - y/100 + y/400 + ( 26 * m + 16 ) /10 + d ) % 7;
return ( enum week ) w;
}
▼戻る▼
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved