「C言語を勉強したいけど、なんだか難しそう…」と思っていませんか?
確かにC言語は、PythonやJavaScriptと比べると、書き方のルールが厳しく感じるかもしれません。
でも実は、C言語の書き方のルール(基本構文)は、とてもシンプルで理にかなっているのです。
C言語をマスターすると、こんな良いことがあります:
- 他のプログラミング言語が理解しやすくなる(JavaやC++など多くの言語がC言語の影響を受けている)
- コンピューターの仕組みが深く理解できる
- 組み込みシステムやOS開発などの分野で活躍できる
- プログラミングの基礎力がしっかり身につく
この記事では、「プログラミング初めて」という方でも、C言語の基本構文がしっかり理解できるように、身近な例を使って一つずつ丁寧に説明します。
C言語の基本構造を理解しよう

最初に見る「Hello, World!」
プログラミングを学ぶときの定番、「Hello, World!」をC言語で書いてみましょう:
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
実行結果:
Hello, World!
「うわ、いきなり複雑…」と思うかもしれませんが、実は一つずつ見ると、とてもシンプルなのです。
コードを分解して理解しよう
1行目:#include <stdio.h>
- 「標準入出力の機能を使えるようにしてください」という お願い
- まるで図書館で本を借りるときの「利用カード」のようなもの
printf
(画面に表示)を使うために必要
3行目:int main(void) {
- プログラムの「入り口」を作る宣言
- どんなC言語のプログラムも、必ずここから実行が始まる
{
は「ここから main関数の中身が始まりますよ」という合図
4行目:printf("Hello, World!\n");
- 画面に「Hello, World!」と表示する命令
\n
は「改行してください」という特別な記号- 行の最後の
;
(セミコロン)は「この命令はここで終わり」という印
5行目:return 0;
- 「プログラムが正常に終了しました」とコンピューターに報告
0
は「成功」という意味(数学と違って、プログラムでは0が成功!)
6行目:}
- main関数の終わりを示す
{
と}
はペアで使う(開いたら必ず閉じる)
なぜこの書き方なの?
疑問1:なぜ最初に#include
が必要?
C言語は「必要な機能だけ読み込む」という考え方です。
これにより、プログラムが軽くて早くなります。
まるで、料理に必要な道具だけをキッチンに並べるようなイメージです。
疑問2:なぜmain関数が必要?
コンピューターは「どこから始めればいいかわからない」ので、「ここがスタート地点ですよ」と教えてあげる必要があります。
main関数がその「スタート地点」の目印なのです。
この基本構造が理解できたら、次は実際に文字を表示したり、データを入力したりする方法を学んでみましょう。
ライブラリの読み込み:include文の使い方
includeって何?
#include
は、「他の人が作った便利な機能を借りてきます」という宣言です。
身近な例で考えてみましょう:
- 料理をするとき → 包丁、まな板、フライパンなどの道具が必要
- 数学の問題を解くとき → 紙とペン、定規、コンパスなどの道具が必要
- C言語でプログラムを作るとき → printf、scanfなどの機能が必要
よく使うライブラリ一覧
#include <stdio.h> // 画面への表示、キーボードからの入力
#include <stdlib.h> // メモリの管理、プログラムの終了など
#include <string.h> // 文字列の操作(文字をつなげる、比較するなど)
#include <math.h> // 数学の計算(平方根、三角関数など)
実際の使用例
#include <stdio.h> // printf を使うため
#include <math.h> // sqrt (平方根) を使うため
int main(void) {
printf("5の平方根は %.2f です\n", sqrt(5));
return 0;
}
実行結果:
5の平方根は 2.24 です
重要なポイント:
- includeは必ずプログラムの最初に書く
- 使わない機能のincludeは書かなくてもOK(でも書いても害はない)
- < > で囲むのは「システムが用意したライブラリ」という意味
includeを忘れるとどうなる?
// #include <stdio.h> ← これを忘れると...
int main(void) {
printf("Hello!\n"); // エラー!printfが使えない
return 0;
}
エラーメッセージ例:
error: 'printf' was not declared in this scope
まるで、包丁がないのに野菜を切ろうとするようなものです。
必要な道具(ライブラリ)を最初に用意しておくことが大切ですね。
includeの仕組みがわかったら、次はプログラムの「心臓部」であるmain関数について詳しく学んでみましょう。
main関数:プログラムの心臓部

main関数の役割
main関数は、C言語プログラムの「司令塔」です。
どんなに大きなプログラムでも、必ずmain関数から実行が始まります。
身近な例で考えてみましょう:
- 学校の朝礼 → 校長先生の話から1日が始まる
- 料理のレシピ → 「1. 材料を準備する」から始まる
- C言語のプログラム → main関数から始まる
main関数の基本的な書き方
int main(void) {
// ここにプログラムの処理を書く
return 0;
}
各部分の意味:
int
:「この関数は整数を返します」という約束main
:関数の名前(これは決まりなので変更不可)(void)
:「この関数は引数(外からのデータ)を受け取りません」という意味{ }
:関数の中身を囲む(この中に実際の処理を書く)return 0;
:「正常に終了しました」という報告
いろんなパターンのmain関数
パターン1:基本形
int main(void) {
printf("基本的なmain関数です\n");
return 0;
}
パターン2:コマンドライン引数を受け取る形
int main(int argc, char *argv[]) {
printf("引数の数: %d\n", argc);
printf("プログラム名: %s\n", argv[0]);
return 0;
}
初心者の方は、まず基本形をマスターしましょう!
return文の重要性
int main(void) {
printf("処理1\n");
printf("処理2\n");
return 0; // 「成功しました」という意味
printf("この行は実行されません\n"); // returnの後なので実行されない
}
return文で使う数字の意味:
return 0;
→ 成功、正常終了return 1;
→ エラー、異常終了return -1;
→ エラー、異常終了
実際のプログラム例
#include <stdio.h>
int main(void) {
// 挨拶
printf("=== 計算プログラム ===\n");
// 計算実行
int a = 10;
int b = 5;
int sum = a + b;
// 結果表示
printf("%d + %d = %d\n", a, b, sum);
// 終了メッセージ
printf("計算完了!\n");
return 0; // 正常終了
}
実行結果:
=== 計算プログラム ===
10 + 5 = 15
計算完了!
main関数の書き方がわかったら、次は画面に文字を表示したり、ユーザーからデータを入力してもらったりする方法を学んでみましょう。
画面表示と入力:printfとscanf
printf:画面に表示する魔法の関数
printf
は「print formatted」の略で、「整った形で印刷する」という意味です。
画面に文字や数字を表示するときに使います。
基本的なprintfの使い方
文字を表示する
#include <stdio.h>
int main(void) {
printf("こんにちは!\n");
printf("今日は良い天気ですね\n");
return 0;
}
実行結果:
こんにちは!
今日は良い天気ですね
数字を表示する
#include <stdio.h>
int main(void) {
printf("私の年齢は %d 歳です\n", 20);
printf("身長は %.1f cm です\n", 170.5);
return 0;
}
実行結果:
私の年齢は 20 歳です
身長は 170.5 cm です
特別な文字(エスケープシーケンス)
printf("改行 → こんにちは\n世界");
printf("タブ → 名前\t年齢\n");
printf("引用符 → 彼は\"こんにちは\"と言った\n");
printf("バックスラッシュ → C:\\Program Files\\\n");
実行結果:
改行 → こんにちは
世界
タブ → 名前 年齢
引用符 → 彼は"こんにちは"と言った
バックスラッシュ → C:\Program Files\
書式指定子(フォーマット指定子)
書式指定子 | 意味 | 使用例 |
---|---|---|
%d | 整数 | printf("%d", 123) |
%f | 小数 | printf("%f", 3.14) |
%.2f | 小数点以下2桁 | printf("%.2f", 3.14159) |
%c | 1文字 | printf("%c", 'A') |
%s | 文字列 | printf("%s", "hello") |
scanf:ユーザーからの入力を受け取る
scanf
は「scan formatted」の略で、「決まった形で読み取る」という意味です。
基本的な使い方
#include <stdio.h>
int main(void) {
int age;
printf("あなたの年齢を入力してください: ");
scanf("%d", &age); // &マークに注意!
printf("あなたは %d 歳ですね\n", age);
return 0;
}
実行例:
あなたの年齢を入力してください: 25
あなたは 25 歳ですね
なぜ&マークが必要なの?
int age;
scanf("%d", &age); // &age ← これが正しい
scanf("%d", age); // age ← これはエラー!
&マークの意味:
age
→ 「変数ageの値」を意味&age
→ 「変数ageの住所」を意味
scanfは「どこに値を保存すればいいか」を知りたいので、変数の「住所」を教えてあげる必要があります。まるで宅配便の配達先住所のようなものです。
いろんなデータを入力してもらう
#include <stdio.h>
int main(void) {
char name[50]; // 文字列用の配列
int age;
float height;
printf("お名前を入力してください: ");
scanf("%s", name); // 文字列は&不要
printf("年齢を入力してください: ");
scanf("%d", &age);
printf("身長を入力してください(cm): ");
scanf("%f", &height);
printf("\n=== 入力内容の確認 ===\n");
printf("お名前: %s\n", name);
printf("年齢: %d 歳\n", age);
printf("身長: %.1f cm\n", height);
return 0;
}
実行例:
お名前を入力してください: 田中
年齢を入力してください: 25
身長を入力してください(cm): 170.5
=== 入力内容の確認 ===
お名前: 田中
年齢: 25 歳
身長: 170.5 cm
scanfを使うときの注意点
注意1:スペースが含まれる文字列は読み取れない
// "田中 太郎" と入力しても "田中" しか読み取れない
scanf("%s", name);
注意2:バッファに残るデータ
// 数字の後に文字を入力するときは注意が必要
scanf("%d", &num);
getchar(); // 改行文字を読み飛ばす
scanf("%c", &ch);
printfとscanfの使い方がわかったら、次はデータを保存するための「変数」について詳しく学んでみましょう。
変数とデータ型:データの保存ルール

変数って何?
変数とは、「データを保存しておく箱」のようなものです。
身近な例で考えてみましょう:
- 学校のロッカー → 教科書や体操服を保存
- 冷蔵庫の容器 → 食べ物を保存
- 変数 → 数字や文字を保存
C言語の変数の特徴
C言語では、変数を使う前に必ず「何を保存する箱なのか」を宣言する必要があります。
int age; // 整数を保存する箱を「age」という名前で作る
float height; // 小数を保存する箱を「height」という名前で作る
char grade; // 1文字を保存する箱を「grade」という名前で作る
主要なデータ型
データ型 | 保存できるデータ | サイズ | 使用例 |
---|---|---|---|
int | 整数 | 4バイト | 年齢、個数、点数 |
float | 小数 | 4バイト | 身長、体重、温度 |
double | より精密な小数 | 8バイト | 科学計算、金融計算 |
char | 1文字 | 1バイト | 成績、性別、記号 |
変数の宣言と初期化
宣言だけ
int age; // 箱を作るだけ(中身は未定)
float weight; // 箱を作るだけ(中身は未定)
宣言と同時に値を入れる(初期化)
int age = 20; // 作ると同時に20を入れる
float weight = 65.5; // 作ると同時に65.5を入れる
char grade = 'A'; // 作ると同時に'A'を入れる
実際のプログラム例
#include <stdio.h>
int main(void) {
// 変数の宣言と初期化
int students = 30; // クラスの人数
float average_score = 78.5; // 平均点
char class_grade = 'B'; // クラスの評価
// 計算
int total_score = students * average_score;
// 結果表示
printf("=== クラス情報 ===\n");
printf("人数: %d 人\n", students);
printf("平均点: %.1f 点\n", average_score);
printf("合計点: %d 点\n", total_score);
printf("クラス評価: %c\n", class_grade);
return 0;
}
実行結果:
=== クラス情報 ===
人数: 30 人
平均点: 78.5 点
合計点: 2355 点
クラス評価: B
変数名のルール
良い変数名の例
int age; // 年齢
int student_count; // 学生数
float pi_value; // 円周率の値
悪い変数名の例
int a; // 何を表すかわからない
int 123age; // 数字から始まるのはダメ
int class; // C言語の予約語なのでダメ
変数名のルール:
- 英字またはアンダースコア(_)で始める
- 数字で始めてはいけない
- C言語の予約語(if、for、whileなど)は使えない
- 大文字と小文字は区別される(
age
とAge
は違う変数)
変数の値を変更する
#include <stdio.h>
int main(void) {
int score = 80; // 最初は80点
printf("最初の点数: %d 点\n", score);
score = score + 10; // 10点アップ
printf("10点アップ後: %d 点\n", score);
score = 95; // 95点に変更
printf("変更後: %d 点\n", score);
return 0;
}
実行結果:
最初の点数: 80 点
10点アップ後: 90 点
変更後: 95 点
データ型の使い分けのコツ
整数を使う場面:
- 人数、個数、回数
- 年、月、日
- 点数(小数点以下がない場合)
小数を使う場面:
- 身長、体重、温度
- 割合、平均値
- 金額(小数点以下がある場合)
文字を使う場面:
- 成績(A、B、C)
- 性別(M、F)
- Yes/No(Y、N)
変数とデータ型がわかったら、次はプログラムに「判断」をさせる条件分岐を学んでみましょう。
条件分岐:プログラムに判断させよう

if文:もしも〜なら
if文は、「もし条件が当てはまるなら、この処理をする」という命令です。
身近な例で考えてみましょう:
- 「もし雨が降っているなら、傘を持って行く」
- 「もしテストが80点以上なら、ゲームをしても良い」
- 「もし年齢が18歳以上なら、運転免許を取れる」
基本的なif文の書き方
if (条件) {
// 条件が当てはまるときの処理
}
実際の例:
#include <stdio.h>
int main(void) {
int age = 20;
if (age >= 18) {
printf("あなたは大人です\n");
}
return 0;
}
実行結果:
あなたは大人です
if-else文:そうでなければ
if (条件) {
// 条件が当てはまるときの処理
} else {
// 条件が当てはまらないときの処理
}
実際の例:
#include <stdio.h>
int main(void) {
int score;
printf("テストの点数を入力してください: ");
scanf("%d", &score);
if (score >= 60) {
printf("合格です!おめでとう!\n");
} else {
printf("不合格です。次回頑張りましょう。\n");
}
return 0;
}
複数の条件:else if文
#include <stdio.h>
int main(void) {
int score;
printf("テストの点数を入力してください: ");
scanf("%d", &score);
if (score >= 90) {
printf("優秀!素晴らしい成績です\n");
} else if (score >= 80) {
printf("良好!よく頑張りました\n");
} else if (score >= 60) {
printf("合格!次はもう少し頑張りましょう\n");
} else {
printf("不合格!復習して再チャレンジ\n");
}
return 0;
}
実行例:
テストの点数を入力してください: 85
良好!よく頑張りました
比較演算子
演算子 | 意味 | 使用例 |
---|---|---|
== | 等しい | age == 20 |
!= | 等しくない | age != 20 |
> | より大きい | score > 80 |
< | より小さい | score < 60 |
>= | 以上 | score >= 60 |
<= | 以下 | score <= 100 |
論理演算子で複数の条件を組み合わせる
AND演算子(&&):両方の条件が成り立つとき
#include <stdio.h>
int main(void) {
int age;
int has_license;
printf("年齢を入力してください: ");
scanf("%d", &age);
printf("運転免許を持っていますか?(1:はい, 0:いいえ): ");
scanf("%d", &has_license);
if (age >= 18 && has_license == 1) {
printf("車を運転できます\n");
} else {
printf("車を運転できません\n");
}
return 0;
}
OR演算子(||):どちらかの条件が成り立つとき
#include <stdio.h>
int main(void) {
char weather;
printf("今日の天気は?(S:晴れ, R:雨, C:曇り): ");
scanf(" %c", &weather); // スペースに注意
if (weather == 'R' || weather == 'C') {
printf("傘を持って行きましょう\n");
} else {
printf("良い天気ですね!\n");
}
return 0;
}
実用的な例:簡単な年齢判定システム
#include <stdio.h>
int main(void) {
int age;
printf("=== 年齢判定システム ===\n");
printf("年齢を入力してください: ");
scanf("%d", &age);
if (age < 0) {
printf("エラー: 正しい年齢を入力してください\n");
} else if (age <= 12) {
printf("あなたは子供です\n");
printf("- 子供料金が適用されます\n");
} else if (age <= 17) {
printf("あなたは中高生です\n");
printf("- 学生割引が適用されます\n");
} else if (age <= 64) {
printf("あなたは大人です\n");
printf("- 通常料金です\n");
} else {
printf("あなたはシニアです\n");
printf("- シニア割引が適用されます\n");
}
return 0;
}
実行例:
=== 年齢判定システム ===
年齢を入力してください: 25
あなたは大人です
- 通常料金です
条件分岐がわかったら、次は同じ処理を繰り返し実行する「ループ」について学んでみましょう。
繰り返し処理:同じことを何度もさせよう

なぜ繰り返し処理が必要?
例:1から10まで数える
繰り返しを使わない場合:
printf("1\n");
printf("2\n");
printf("3\n");
printf("4\n");
printf("5\n");
printf("6\n");
printf("7\n");
printf("8\n");
printf("9\n");
printf("10\n");
これはとても面倒ですよね。もし1から1000まで数えるとしたら、1000行も書く必要があります!
for文:決まった回数繰り返す
for文は「決まった回数だけ繰り返す」ときに使います。
基本の書き方:
for (初期化; 条件; 増減) {
// 繰り返したい処理
}
1から10まで数える例:
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 10; i++) {
printf("%d\n", i);
}
return 0;
}
実行結果:
1
2
3
4
5
6
7
8
9
10
for文の仕組みを詳しく解説
for (int i = 1; i <= 10; i++) {
printf("%d\n", i);
}
各部分の説明:
int i = 1
:変数iを1で初期化(最初に1回だけ実行)i <= 10
:この条件が成り立つ間、繰り返し続けるprintf("%d\n", i)
:実際の処理を実行i++
:iを1増やす(処理の最後に実行)- 2に戻って条件をチェック(条件が偽になるまで繰り返し)
動作の流れ:
i=1: 1<=10? YES → 1を表示 → i=2
i=2: 2<=10? YES → 2を表示 → i=3
i=3: 3<=10? YES → 3を表示 → i=4
...
i=10: 10<=10? YES → 10を表示 → i=11
i=11: 11<=10? NO → 終了
いろんなfor文のパターン
偶数だけを表示:
#include <stdio.h>
int main(void) {
printf("1から20までの偶数:\n");
for (int i = 2; i <= 20; i += 2) {
printf("%d ", i);
}
printf("\n");
return 0;
}
実行結果:
1から20までの偶数:
2 4 6 8 10 12 14 16 18 20
逆順に表示:
#include <stdio.h>
int main(void) {
printf("カウントダウン:\n");
for (int i = 10; i >= 1; i--) {
printf("%d ", i);
}
printf("スタート!\n");
return 0;
}
実行結果:
カウントダウン:
10 9 8 7 6 5 4 3 2 1 スタート!
while文:条件が成り立つ間繰り返す
while文は「条件が成り立つ間ずっと繰り返す」ときに使います。
基本の書き方:
while (条件) {
// 繰り返したい処理
}
例:ユーザーが0を入力するまで繰り返す:
#include <stdio.h>
int main(void) {
int number;
printf("数字を入力してください(0で終了):\n");
while (1) { // 無限ループ
printf("> ");
scanf("%d", &number);
if (number == 0) {
break; // ループから抜ける
}
printf("あなたが入力した数字: %d\n", number);
}
printf("プログラムを終了します\n");
return 0;
}
実行例:
数字を入力してください(0で終了):
> 5
あなたが入力した数字: 5
> 12
あなたが入力した数字: 12
> 0
プログラムを終了します
do-while文:最低1回は実行する
do-while文は「最低1回は実行してから、条件をチェックする」ときに使います。
#include <stdio.h>
int main(void) {
int choice;
do {
printf("\n=== メニュー ===\n");
printf("1. 挨拶\n");
printf("2. 計算\n");
printf("3. 終了\n");
printf("選択してください (1-3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("こんにちは!\n");
break;
case 2:
printf("2 + 3 = 5\n");
break;
case 3:
printf("プログラムを終了します\n");
break;
default:
printf("1-3の数字を入力してください\n");
}
} while (choice != 3);
return 0;
}
実用的な例:九九の表を作る
#include <stdio.h>
int main(void) {
printf("=== 九九の表 ===\n");
// 横の数字を表示
printf(" ");
for (int j = 1; j <= 9; j++) {
printf("%4d", j);
}
printf("\n");
// 線を引く
printf(" ");
for (int j = 1; j <= 9; j++) {
printf("----");
}
printf("\n");
// 九九の計算
for (int i = 1; i <= 9; i++) {
printf("%d |", i); // 縦の数字を表示
for (int j = 1; j <= 9; j++) {
printf("%4d", i * j);
}
printf("\n");
}
return 0;
}
実行結果:
=== 九九の表 ===
1 2 3 4 5 6 7 8 9
------------------------------------
1 | 1 2 3 4 5 6 7 8 9
2 | 2 4 6 8 10 12 14 16 18
3 | 3 6 9 12 15 18 21 24 27
4 | 4 8 12 16 20 24 28 32 36
5 | 5 10 15 20 25 30 35 40 45
6 | 6 12 18 24 30 36 42 48 54
7 | 7 14 21 28 35 42 49 56 63
8 | 8 16 24 32 40 48 56 64 72
9 | 9 18 27 36 45 54 63 72 81
ループ制御:break と continue
break:ループを途中で抜ける
#include <stdio.h>
int main(void) {
printf("1から100の中で最初に見つかる7の倍数:\n");
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0) {
printf("%d\n", i);
break; // ここでループを抜ける
}
}
return 0;
}
実行結果:
1から100の中で最初に見つかる7の倍数:
7
continue:今回の処理をスキップして次へ
#include <stdio.h>
int main(void) {
printf("1から10までの奇数:\n");
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 偶数はスキップ
}
printf("%d ", i);
}
printf("\n");
return 0;
}
実行結果:
1から10までの奇数:
1 3 5 7 9
繰り返し処理がわかったら、次はコードを読みやすくするコメントの書き方を学んでみましょう。
コメント:コードを読みやすくしよう

コメントって何?なぜ必要?
コメントとは、「プログラムの説明書き」のようなものです。コンピューターは無視しますが、人間がコードを読むときにとても役立ちます。
身近な例で考えてみましょう:
- 料理のレシピ → 「弱火で10分煮る」「塩は少なめに」
- 地図 → 「駅から徒歩5分」「この道は一方通行」
- プログラムのコメント → 「ここで計算する」「エラーチェック」
なぜコメントが大切なの?
理由1:他の人が読みやすくなる
// コメントなし(わかりにくい)
int x = a * 0.08;
// コメントあり(わかりやすい)
int tax = price * 0.08; // 消費税を計算
理由2:将来の自分が理解しやすくなる 1ヶ月後に自分のコードを見返したとき、「なんでこんなコードを書いたんだっけ?」となることがよくあります。コメントがあれば思い出しやすくなります。
理由3:複雑な処理の説明ができる
// 複雑な数式にコメントで説明
float bmi = weight / (height * height); // BMI = 体重 ÷ 身長²
コメントの書き方
1行コメント(//)
#include <stdio.h>
int main(void) {
// これは1行コメントです
int age = 20; // 変数の説明もできます
printf("年齢: %d\n", age);
return 0;
}
複数行コメント(/ /)
#include <stdio.h>
/*
* このプログラムは年齢を表示するプログラムです
* 作成者: 初心者プログラマー
* 作成日: 2025年6月6日
*/
int main(void) {
int age = 20;
/*
* ここで年齢を表示します
* 将来的には誕生日から自動計算する予定
*/
printf("年齢: %d\n", age);
return 0;
}
良いコメントの例
処理の目的を説明
#include <stdio.h>
#include <math.h>
int main(void) {
float a, b, c;
printf("三角形の3辺の長さを入力してください\n");
printf("辺a: ");
scanf("%f", &a);
printf("辺b: ");
scanf("%f", &b);
printf("辺c: ");
scanf("%f", &c);
// ヘロンの公式を使って面積を計算
float s = (a + b + c) / 2; // 半周長を計算
float area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形の面積: %.2f\n", area);
return 0;
}
複雑な条件の説明
#include <stdio.h>
int main(void) {
int year;
printf("年を入力してください: ");
scanf("%d", &year);
// うるう年の判定ルール:
// 1. 4で割り切れる
// 2. ただし100で割り切れる年は平年
// 3. ただし400で割り切れる年はうるう年
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d年はうるう年です\n", year);
} else {
printf("%d年は平年です\n", year);
}
return 0;
}
エラー処理の説明
#include <stdio.h>
int main(void) {
int a, b;
printf("2つの数を入力してください\n");
printf("数1: ");
scanf("%d", &a);
printf("数2: ");
scanf("%d", &b);
// ゼロ除算エラーをチェック
if (b == 0) {
printf("エラー: 0で割ることはできません\n");
return 1; // エラーで終了
}
// 除算を実行
float result = (float)a / b;
printf("%d ÷ %d = %.2f\n", a, b, result);
return 0;
}
悪いコメントの例
当たり前のことを書く
// 悪い例
int age = 20; // 変数ageに20を代入
// 良い例
int age = 20; // プレイヤーの初期年齢
コードと一致しないコメント
// 悪い例(コメントとコードが違う)
int price = 1000; // 税込み価格
// 良い例
int price = 1000; // 税抜き価格
実用的なコメントの例
#include <stdio.h>
// ====================================
// 簡単な成績管理プログラム
// 機能: 点数を入力して成績を判定
// ====================================
int main(void) {
int score;
char grade;
// ユーザーから点数を入力してもらう
printf("テストの点数を入力してください (0-100): ");
scanf("%d", &score);
// 入力値の妥当性をチェック
if (score < 0 || score > 100) {
printf("エラー: 0-100の範囲で入力してください\n");
return 1;
}
// 点数に基づいて成績を判定
if (score >= 90) {
grade = 'A'; // 優秀
} else if (score >= 80) {
grade = 'B'; // 良好
} else if (score >= 70) {
grade = 'C'; // 普通
} else if (score >= 60) {
grade = 'D'; // 合格ライン
} else {
grade = 'F'; // 不合格
}
// 結果を表示
printf("点数: %d点\n", score);
printf("成績: %c\n", grade);
// TODO: 将来的にはファイルに保存する機能を追加
// TODO: 複数の科目に対応
return 0;
}
コメントを書くタイミング
プログラムを書く前:
/*
* やりたいこと:
* 1. ユーザーから2つの数を入力してもらう
* 2. どちらが大きいかを比較する
* 3. 結果を表示する
*/
// TODO: ここにプログラムを書く
プログラムを書いた後:
#include <stdio.h>
int main(void) {
int num1, num2; // 比較する2つの数
// 数値を入力してもらう
printf("1つ目の数: ");
scanf("%d", &num1);
printf("2つ目の数: ");
scanf("%d", &num2);
// 大小比較
if (num1 > num2) {
printf("%d の方が大きいです\n", num1);
} else if (num2 > num1) {
printf("%d の方が大きいです\n", num2);
} else {
printf("2つの数は同じです\n");
}
return 0;
}
コメントの書き方がわかったら、最後にC言語の基本構文全体をまとめて確認してみましょう。
まとめ
C言語の基本構文について、初心者の方でも理解できるように詳しく解説しました。
この記事で学んだこと:
基本構造:
- すべてのプログラムは
#include
とmain関数
から始まる { }
でコードのブロックを区切る;
で文の終わりを示すreturn 0;
でプログラムの正常終了を示す
ライブラリの読み込み:
#include <stdio.h>
で入出力機能を使用#include <math.h>
で数学関数を使用- 必要な機能だけを読み込む
入出力:
printf()
で画面への表示scanf()
でユーザーからの入力- 書式指定子(%d、%f、%cなど)でデータ型を指定
変数とデータ型:
int
:整数、float
:小数、char
:1文字- 使用前に必ず型を宣言
- 意味のわかりやすい変数名をつける
条件分岐:
if文
で条件による処理の分岐else if
で複数の条件を処理- 比較演算子(==、!=、>、<など)で条件を記述
繰り返し処理:
for文
で決まった回数の繰り返しwhile文
で条件が成り立つ間の繰り返しbreak
とcontinue
でループを制御
コメント:
//
で1行コメント/* */
で複数行コメント- コードの説明や注意点を記述
覚えておきたい基本パターン:
#include <stdio.h>
int main(void) {
// 変数の宣言
int number;
// 入力
printf("数字を入力: ");
scanf("%d", &number);
// 処理と出力
if (number > 0) {
printf("正の数です\n");
} else {
printf("0以下です\n");
}
return 0;
}
コメント