- ベストアンサー
カレンダー作成プログラムのエラー
- C言語初心者の方が、西暦と月を入力してその月のカレンダーを作成するプログラムを作成しようとしていますが、正しく表示されないエラーが発生しています。
- プログラムの問題の原因は、[A]、[B]、[C]、[D]の部分で誤りがあることです。
- 修正案として、[A]の部分を「i < month」に修正し、[B]の部分を「youbi = ((COMP + COMP /4 - COMP / 100 + COMP / 400) + (day - 1) + youbi) % 7」に修正することを提案します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>カレンダーを作成するプログラムの問題なのですが > if ([C]) > printf("[%2d]", day); > else > printf(" %2d ", day); うぅ~、難しい。 質問者様のように、その月の朔日が日曜なら、全ての日に [] を付ける、というのもありそうだし・・。 あと考えられるのは、特定曜日に [] を付ける、くらいかなぁ。 >カレンダーの表示すらされません。どこがいけないのでしょうか? 年月の取得で、 scanf("%4d%2d, &year, &month"); はマズイです。 scanf("%4d%2d", &year, &month); です。 あと、1週間が8日になっています。#1 さんが指摘した if (youbi > 7) { は、 if( ycnt > 6 ){ です。 些末 for( j = 0, ycnt = 0; j < youbi; j++, ycnt++) { printf(""); } ↓ j は不要です for( ycnt = 0; ycnt < youbi; ycnt++ ){ printf( " .. " ); } (投稿すると、連続する空白は1つになるので、.. 使用) 脱線 それにつけても、年寄りは日曜から始まるカレンダーはどうも苦手です。 週末が週の頭にあるなんて・・。 http://www.nhk.or.jp/bunken/research/kotoba/kotoba_qq_04040101.html
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
> if (youbi = 0) youbi と 0 とを比較してないですね。 また、 > youbi = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7; youbi は 0~6 の範囲の値を取ります。よって、 > if (youbi > 7) { 7 を超えることは絶対にありません。
お礼
回答有難うございます。 かなり答えに近づきました。 >質問者様のように、その月の朔日が日曜なら、全ての日に [] を付ける、というのもありそうだし・・。 []を付けるのは日曜です。 >些末 >for( j = 0, ycnt = 0; j < youbi; j++, ycnt++) { > printf(""); >} >↓ j は不要です >for( ycnt = 0; ycnt < youbi; ycnt++ ){ > printf( " .. " ); >} これは問題文なので変更できません。