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

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

ただいまの
回答率

88.83%

for文をつかったカレンダー c言語

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,762

yoshiteru21

score 40

for文を使って画像のようなカレンダーを出力させるプログラムをつくりなさいという問題なのですが
下のコードまでは作り上げたのですがあとは何を入力すれば完成するのでしょうか?
頭がパンクしております。。。
イメージ説明                                                

#include <stdio.h>

int main(void){
    int week, days, i;
    printf("カレンダーを表示させます\n");
    printf("表示させたい月は何曜日から始まりますか?次の数字で答えてください\n");
    printf("1:日,2:月,3:火,4:水,5:木,6:金,7:土\n");
    scanf_s("%d", &week);
    printf("表示させたい月は何日ありますか?数字を入力してください\n");
    scanf_s("%d", &days);
    printf(" 日 月 火 水 木 金 土\n");

    int youbi;
    for (i = 1; i <= week - 1; i++){
        printf("   ");
    }  ;
    for (i = 1; i <= days; i++){
        for (int j = 1; j <= 7; j++){
            printf("%3d", i);
            i++;
            youbi = week + j;

            if (youbi == 8){
                printf("\n");
            }

        }

        printf("\n");
    }





    return 0;
}    
コード
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2019/04/12 15:36

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

checkベストアンサー

+2

for と if を使えということなら、

  1. 日曜日から月初の曜日の一つ前(前月最終日)までを空白表示する
    これは for 文で、1~(月初曜日-1)でループする
  2. 今表示しようとする曜日を、変数に入れる(初期値は月初の曜日)
  3. 1~月末日で for ループを作り、中で以下の処理を行う
    3-1. 日を出力する
    3-2. 曜日を一つずらす(変数の値を1増やす)
    3-3. もし曜日が土曜日を超えていたら、曜日を日曜日にして、改行を出力する
  4. 改行を出力して終了

という手順ですかねえ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/12 17:32

    至極単純なコードであるのに難しく考えすぎていました。
    一個一個順序を踏まえて作るということを教えていただきありがとうございます

    キャンセル

  • 2019/04/12 17:49

    ちなみにこれ、動くんですが、ある条件でだけ微妙に気になる動きをします。もともとの課題の条件には書いていないのであえてそのままにしていますが。
    まあこれは宿題というか、パズルや謎かけの類いだとでも思ってください。

    キャンセル

0

先ほど同様の質問をされていたと思いますが、そこに参考にと載せていただいたコードを見ても一切わからないですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/12 16:22

    なるほどですね!
    すみませんご丁寧にありがとうございます(-_-;)

    キャンセル

  • 2019/04/12 16:35

    いえ、課題であれなんであれ、考えすぎると頭こんがらがりますから。
    コードそのものを提示されるよりも、まずは手順を追って自分なりに書いてみると少しは整理されるかと思います。
    他人任せの質問者だと思われると、マイナス評価が増えて質問に答えてくださる方も減ってしまうと思われますので、お疲れかとは思いますがもう少しだけがんばってみてください。

    キャンセル

  • 2019/04/12 17:34

    難しく考えすぎていました。
    無事解決しました。ご丁寧に教えていただき誠にありがとうございますm(__)m

    キャンセル

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

  • ただいまの回答率 88.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る