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日ごとに改行された整然としたカレンダーが表示されていることがわかります。入力値を変えれば、任意の月のカレンダーに対応できます。
-
JavaScriptのforループをフローチャートで図解!仕組みと基本構文をわかりやすく解説
JavaScriptのforループとは? JavaScriptにおける「for」ループは、同じ処理を繰り返し実行するための基本的な制御構造です。forループは主に3つの要素で構成されており、それぞれが明確な役割を持っています。 1. ループの初期化 まず最初にループの初期化が行われます。ここでは、カウンターとして使う変数に開始値を設定します。この初期化文は、ループ本体が始まる前に一度だけ実行されるのが特徴です。 2. 条件判定(テスト文) 次に条件判定が行われ、指定された条件が真(true)かどうかが評価されます。条件がtrueであれば、ループ内に記述されたコードが実行されます。一方、fa
-
数式だけでExcelにFORループを作る方法|3つの実例でわかりやすく解説
Excel VBAは使いたくないけれど、数式だけでFORループのような繰り返し処理を実現したい——そう考えたことはありませんか?この記事では、数式のみを使ってFORループと同じ動作を実現する方法を具体的に紹介します。Excel VBAでコードが書ける方は自由自在です。しかし、VBAを書いたことがない方や、ブックにマクロコードを含めたくない方は、シンプルなループ処理ひとつでも工夫が必要になります。そんなときこそ、発想の転換が役立ちます。作業用ファイルのダウンロード以下のリンクから、この記事で使用する作業用ファイルをダウンロードできます。数式でExcelにFORループを作る3つの例ここでは、数式を