Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のforループを使って、ユーザーが指定した1か月分のカレンダーを表示する方法

はじめに

C言語では、forループを組み合わせることで、「その月の日数」と「初日の曜日」をもとに、1か月分のカレンダーを簡単に表示できます。この記事では、その基本的なロジックとサンプルプログラムを解説します。

カレンダー表示のロジック

1か月分のカレンダーを表示するための基本的なロジックは以下の通りです。

for(i=1;i<first;i++)
    printf(" ");
for(i=1;i<=noofdays;i++){
    printf("%3d",i);
    if((first+i-1)%7==0)
        printf("\n");
}

このロジックのポイントは次の2つです。

  • 最初のループ: 初日の開始位置(first)より小さい回数だけ空白を出力し、1日が正しい曜日の位置に揃うように調整します。
  • 2つ目のループ: 各日付を「%3d」で3桁幅の右寄せ形式で出力します。(first + i − 1) を7で割った余りが0になるタイミング、つまり1週間分の出力が終わったところで改行することで、7日ごとに折り返して表示されます。

サンプルプログラム

次の例では、ユーザーから「月の日数」と「初日の曜日(数値)」を入力として受け取り、それに応じて1か月分のカレンダーを表示します。

#include<stdio.h>
int main(){
    int i,noofdays;
    int first;
    printf("enter no of days in a month:\n");
    scanf("%d",&noofdays);
    printf("enter first day in a month:\n");
    scanf("%d",&first);
    for(i=1;i<first;i++)
        printf(" ");
    for(i=1;i<=noofdays;i++){
        printf("%3d",i);
        if((first+i-1)%7==0)
            printf("\n");
    }
    return 0;
}

実行結果

enter no of days in a month:
30
enter first day in a month:
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

この実行例では、日数として「30」、初日の開始位置として「4」を入力しています。その結果、1日が4番目の位置から始まり、7日ごとに改行された整然としたカレンダーが表示されていることがわかります。入力値を変えれば、任意の月のカレンダーに対応できます。

  1. JavaScriptのforループをフローチャートで図解!仕組みと基本構文をわかりやすく解説

    JavaScriptのforループとは? JavaScriptにおける「for」ループは、同じ処理を繰り返し実行するための基本的な制御構造です。forループは主に3つの要素で構成されており、それぞれが明確な役割を持っています。 1. ループの初期化 まず最初にループの初期化が行われます。ここでは、カウンターとして使う変数に開始値を設定します。この初期化文は、ループ本体が始まる前に一度だけ実行されるのが特徴です。 2. 条件判定(テスト文) 次に条件判定が行われ、指定された条件が真(true)かどうかが評価されます。条件がtrueであれば、ループ内に記述されたコードが実行されます。一方、fa

  2. 数式だけでExcelにFORループを作る方法|3つの実例でわかりやすく解説

    Excel VBAは使いたくないけれど、数式だけでFORループのような繰り返し処理を実現したい——そう考えたことはありませんか?この記事では、数式のみを使ってFORループと同じ動作を実現する方法を具体的に紹介します。Excel VBAでコードが書ける方は自由自在です。しかし、VBAを書いたことがない方や、ブックにマクロコードを含めたくない方は、シンプルなループ処理ひとつでも工夫が必要になります。そんなときこそ、発想の転換が役立ちます。作業用ファイルのダウンロード以下のリンクから、この記事で使用する作業用ファイルをダウンロードできます。数式でExcelにFORループを作る3つの例ここでは、数式を