dポイントプレゼントキャンペーン実施中!

西暦年と月を入力すると、その年月のカレンダーが出てくる万年カレンダーのC言語プログラムを教えてください!お願いします!

A 回答 (6件)

>ありがとうございます。

さっそくプログラムを動かしてみました。でも第一週と第二週の日付がうまくつながっていないです。これはどうしてでしょうか?

ごめんなさい。
htmlの半角スペースを連続して書くと1個にされてしまう事を忘れていました。
下から7行目の
printf(" ");
の半角スペース1個は半角スペース3個にしてください。
    • good
    • 3
この回答へのお礼

丁寧に最後まで説明していただいて、ありがとうございました!

お礼日時:2004/07/07 12:22

以下のプログラムを試して下さい。



#include<stdio.h>

int dayofw(int ,int ,int );

void main()
{
int y, m, dw, i, cnt;
char week[7][4]={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
int mday[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

printf("西暦年入力->");
scanf("%d", &y);

printf("月入力->");
scanf("%d", &m);


dw=dayofw(y, m, 1);
cnt=dw;

printf("%d/%d\n ", y, m);
for(i=0; i<7; i++){
printf("%s ", week[i]);
}
printf("\n");

for(i=0; i<dw; i++){
printf(" ");
}
for(i=1; i<=mday[m-1]; i++){
printf(" %3d ", i);
cnt++;
if(cnt==7){
printf("\n");
cnt=0;
}
}
printf("\n");
}

int dayofw(int y, int m, int d)
{
int y1, yobi;

y1=(y+(y/4)-(y/100)+(y/400)+(2.6*m+1.6)+d);
yobi=y1%7;

return(yobi);
}
    • good
    • 0

ひとつ気になるのですが, グレゴリオ暦以前は考えなくていいのですか?

    • good
    • 0

> でも第一週と第二週の日付がうまくつながっていないです。



気に入らないならご自分で正しいコードをお書きになってください。'おんぶにだっこ'はあんまりではないですか?

この回答への補足

自分で書けないのと、わからないから説明をお願いしているんですけど・・・。

補足日時:2004/07/06 17:24
    • good
    • 2

暇つぶしに作ってみました。


ツェラーの公式ですね。

#include <stdio.h>

int weekday(int y,int m,int d)
{
if ( m < 3 ){
m += 12 ;
y -- ;
}
return (y+y/4-y/100+y/400+(m*13+8)/5+d)%7 ;
}

int main()
{
int y,m,d,sw,ew ;
printf("年 : ");
scanf("%d",&y);
printf("月 : ");
scanf("%d",&m);
sw = weekday(y,m,1);
ew = weekday(y,m+1,1);
if ( sw <= ew ){
ew = ew - sw + 28 ;
} else {
ew = 35 - sw + ew ;
}
printf("%4d / %d\n",y,m);
printf("日 月 火 水 木 金 土");
for (d=0 ;d<37 ;d++){
if ( !(d%7) ){
printf("\n");
}
if ( d < sw || d >= ew+sw ){
printf(" ");
} else {
printf("%2d ",d-sw+1);
}
}
return 0 ;
}

この回答への補足

ありがとうございます。さっそくプログラムを動かしてみました。でも第一週と第二週の日付がうまくつながっていないです。これはどうしてでしょうか?

補足日時:2004/07/06 15:14
    • good
    • 0

西暦年と月からその月の1日が何曜日かを求めるコードを書けばいい。

検索サイトで "ゼラーの公式" を探しましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!