C言語での万年カレンダーのソースコートを教えてもらったのですが意味がわからないところがあります
#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 ;
}
sw = weekday(y,m,1);
ew = weekday(y,m+1,1);
のところから下の部分なのですがどういう場合分けをしているのですか?
一部分でもいいので教えていただけるとありがたいです。
No.1ベストアンサー
- 回答日時:
曜日を0~6として
weekdayは指定した年月日から曜日を求める関数
swは当月の1日の曜日
ewは翌月の1日の曜日から当月の日数に変換しています。
dは月曜日からの通しのカウントですね
dがsw~sw+ewの範囲が当月の日付になります。
日付はswの分だけずれているのでマイナスして表示しています。
2010/06の場合
sw=2,ew=4
ew=4-2+28 = 30
dが2~32の間は日付を表示する
2010/07の場合
sw=4,ew=0
ew=35-4+0 = 31
dが4~35の間は日付を表示する
質問の部分は当月と翌月の曜日の前後による月の日数計算の場合分けですね
カレンダーを見ながらなら理解し易いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
よくある 『 第○(1・2・3・4・...
-
月の第一週とは
-
6月の第2 第4火曜日は何日...
-
【機械式腕時計のメカニズムの...
-
燃えるゴミの日は何曜日ですか?
-
今週とは何曜日から何曜日まで...
-
エクセルで毎月第2週日の水曜日...
-
毎○曜日って、使いますか?
-
VBA。複数のChangeイベントをま...
-
Excelで第一〇曜日を求める方法...
-
Excel 一ヶ月分の日付と曜日 自...
-
1975年(昭和50年)4月15日...
-
Excel関数で当月の第一日曜日の...
-
ディズニーシー平日の混み具合...
-
ユーザー定義の(aaa)
-
C言語始めたてで先生にこれ進め...
-
特定の曜日は何日?
-
アンケートなどの1日1回の投...
-
シングルサインオンのような仕...
-
あれれ、クッキーが機能しませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
毎○曜日って、使いますか?
-
燃えるゴミの日は何曜日ですか?
-
週2回のペースって だいたい何...
-
土曜日の26時って何曜日の何時...
-
[Excel] ある日の曜日が当月の"...
-
6月の第2 第4火曜日は何日...
-
週休3日制で土日の他にもう一日...
-
VBA。複数のChangeイベントをま...
-
Excelで第一〇曜日を求める方法...
-
ユーザー定義の(aaa)
-
一年の第何週目であるかを判断...
-
c言語の質問です。 ある月のカ...
-
今週とは何曜日から何曜日まで...
-
日本語問題 昨日は何曜日ですか...
-
指定曜日にMsgBox表示は可能で...
-
Consolidateメソッドの引数のSo...
-
Excel VBA 第〇△曜日の場合休日...
おすすめ情報