質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

1回答

1494閲覧

c言語でカレンダー作成

abctata

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2021/06/03 13:12

編集2021/06/03 14:47

c言語でカレンダーを作成しようとしているのですが
日曜日の二段目から3日を表示させたいのですがカレンダー外にはみ出てしまいます
3~8を二段目に追加させる方法を教えていただきたいです

何月?4
ついたちは何曜日?5
4月のカレンダー
日 月 火 水 木 金 土
--------------- 1 2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

該当のソースコード

#include<stdio.h>
int main(void)
{
int month, weekday;
int days;
int prt_days;
int i;

printf("何月?->"); scanf("%d", &month); printf("ついたちは何曜日(日曜=0,土曜=6)?->"); scanf("%d", &weekday); switch (month) { case 2: days = 28; break; case 4: case 6: case 9: case 11: days = 30; break; default: days = 31; break; } printf("%d月のカレンダー\n", month); printf(" 日 月 火 水 木 金 土"); for (i = 0; i < weekday ; i++) { printf("\n"); printf("---------------"); break; } prt_days = 1; for (i = 0; i < (7 - weekday); i++) { printf("%3d", prt_days); prt_days++; break; } while (prt_days <= days) { for (i = 0; i < 7; i++) { printf("%3d", prt_days); prt_days++; if(prt_days == 31) { break;

; }

} printf("\n"); } return 0;

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/06/03 13:54

多分やりたいこととソースが一致していない気がするので確認です。 入力を6,1としたとき、6月1日は何曜日として出力するのが目的ですか?
guest

回答1

0

ベストアンサー

はみ出るのは改行のタイミングがおかしいのが原因です。
それぞれの処理で何をしているのかを考えながらコードを書くようにするとミスが減らせると思います。

C

1int main(void) 2{ 3 int month, weekday; 4 int days; 5 int prt_days; 6 int i; 7 8 printf("何月?"); 9 scanf("%d", &month); 10 11 printf("ついたちは何曜日(日曜=0,土曜=6)?->"); 12 scanf("%d", &weekday); 13 14 switch (month) 15 { 16 case 2: 17 days = 28; 18 break; 19 case 4: 20 case 6: 21 case 9: 22 case 11: 23 days = 30; 24 break; 25 default: 26 days = 31; 27 break; 28 } 29 30 printf("%d月のカレンダー\n", month); 31 printf(" 日 月 火 水 木 金 土\n"); 32 33 // 初週の処理 34 // 1日より前の曜日は"---"を表示 35 for (i = 0; i < weekday; i++) 36 { 37 printf("---"); 38 } 39 40 prt_days = 1; 41 // 土曜日まで表示 42 for (i = 0; i < (7 - weekday); i++) 43 { 44 printf("%3d", prt_days); 45 prt_days++; 46 } 47 printf("\n"); 48 49 // 2週目以降の処理 50 while (prt_days <= days) 51 { 52 for (i = 0; i < 7; i++) 53 { 54 printf("%3d", prt_days); 55 prt_days++; 56 if (prt_days > days) 57 { 58 break; 59 } 60 } 61 62 printf("\n"); 63 } 64 return 0; 65}

投稿2021/06/03 14:50

neconekocat

総合スコア443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問