
C言語入門|2章の練習問題
2章では、変数とは何か、どのようなデータ型が用意されているのか、
そして値を変数に格納していく「代入」、初期値を設定する「初期化」などを学びました。
コンピュータのメモリは、数字や文字をそのままの姿で覚えておくのではなく、
データ型にもとづいた形式で保存します。
そのため、プログラムを書くときはただ変数名を決めるだけでなく、
「これは整数用」「これは小数用」「これは文字用」と明確に型を指定する必要があります。
また、初期化されていない変数を使うと、
メモリの中に「過去に残っていた関係ないゴミ」が表示されてしまうことも学びました。
これが「未初期化変数による予期しない動作」です。

2章で登場した重要な命令・構文のおさらい
変数宣言と初期化

変数宣言の書式
型名 変数名;初期化の書式
変数名 = 値;ポイント
- C言語では「型 → 名前」の順番で記述
- 値を先に使う前に、必ず初期化が必要
変数とデータ型のまとめ
| 型名 | 格納できる値の例 | 使用例 | 説明 |
|---|---|---|---|
| int | 0, 100, -50 | 数のカウンタ | 整数用の基本型 |
| long | 2000000000 など大きい数 | 時刻・資産などの大きい値 | int より広い範囲 |
| float | 3.14, 0.005 | 体脂肪率など | 小数を扱うが精度はそこそこ |
| double | より高精度な小数 | 距離・科学計算など | floatより精度が高い |
| char | 'A', '7' | 記号・数字1文字 | シングルクォート |
| bool | true, false | フラグ値 | stdbool.h が必要 |
よく登場する命令の解説
printf(書式)
printf("メッセージ");
printf("名前=%s 年齢=%d\n", name, age);画面に文字や数値を出力する最重要命令。
代入文
x = 5;
y = x + 3;右辺を左辺の変数に保存する命令。
新しい値は上書きされるので「最新の状態」は常に変化する。
サンプルプログラム
プロジェクト名:2-13-1 ソースファイル名: sample2-13-1.c
#include <stdio.h>
#include <stdbool.h>
int main(void) {
int year = 2025;
bool isSunny = true;
printf("Welcome to C programming!\n");
printf("Year: %d, Sunny: %d\n", year, isSunny);
return 0;
}このプログラムでは、
- 整数型 year
- 真偽値 isSunny
を使い、printfでメッセージを表示しています。
2章の練習問題
以下はすべて新しく作成した問題で、
参考例と同等の形式・難易度になるように構成しています。
【練習2-1】
次の値を格納するために適したデータ型を選び、
それぞれ 変数宣言と初期化 を行ってください。
変数名は意味の分かる名前をつけること。
(ア)-128
(イ)'G'
(ウ)72.45
(エ)true
(オ)50000000L
【解答例と解説】
| 問題 | データ型 | 宣言と初期化 | 解説 |
|---|---|---|---|
| ア | int | int minValue = -128; | 整数として保存 |
| イ | char | char grade = 'G'; | 1文字はchar |
| ウ | float | float bmi = 72.45f; | 小数 → float |
| エ | bool | bool active = true; | 真偽値 |
| オ | long | long population = 50000000L; | 大きな整数 |
【練習2-2】
次の表の内容に従い、用途に合った変数を宣言してください。
宣言文の最後にコメントも記述すること。
| 型 | 用途 |
|---|---|
| int | 点数を記録する。 |
| double | 距離を保存する。 |
| bool | ボタンが押されたか判定する。 |
| char | 言語コード('J' など) |
| long | 合計アクセス数 |
【解答例と解説】
int score = 0; // 点数
double distance = 0; // 距離
bool pressed = false; // ボタン状態
char lang = 'J'; // 言語コード
long accessTotal = 0L; // アクセス数【練習2-3】
次のプログラムは、実行すると「未初期化の変数が原因で想定外の数字」が表示されてしまいます。
プロジェクト名:2-13-2 ソースファイル名: sample2-13-2.c
#include <stdio.h>
int main(void) {
int height;
int weight;
printf("身長%dcm、体重%dkgです\n", height, weight);
return 0;
}(1)このプログラムが正しい結果を表示しない理由を説明してください。
(2)身長170cm、体重65kgという正しい情報を出力するように修正してください。
【解答例と解説】
(1)height と weight が初期化されておらず、メモリ上の「ゴミ値」が使われるため。
(2)修正版
int height = 170;
int weight = 65;または後から代入する形でも可。
【練習2-4】
次の処理手順に従い、最終的に表示されるのはどれか。
解答群から選べ。
処理
- 整数型 a ← 5
- 整数型 b ← 7
- a ← b
- b ← a + 3
- a と b をこの順でコンマ区切りで出力する
解答群
ア 5,7
イ 7,10
ウ 7,8
エ 8,7
オ 10,7
【解答例と解説】
正解:イ 7,10
| 変数 | 値の変化 |
|---|---|
| a | 5 → 7 |
| b | 7 → 7 → 10 |
【練習2-5】
次の変数宣言のうち、正しいものをすべて選んでください。
(ア) int 2count = 5;
(イ) char symbol = '@';
(ウ) bool flag = false;
(エ) float rate = 0.12;
(オ) double tax rate = 0.08;
【解答例と解説】
正しいもの:イ、ウ、エ
| 記号 | 正誤 | 解説 |
|---|---|---|
| ア | × | 変数名は数字で始められない。 |
| イ | ○ | char に1文字 |
| ウ | ○ | bool はOK |
| エ | ○ | float 正しい |
| オ | × | 変数名にスペースは使えない(tax_rate などが必要) |
【練習2-6】
次のコードを読み、最終的に画面に出力される値を答えてください。
int x = 10;
int y = 4;
x = x + y; // 10 + 4 → 14
y = x - 6; // 14 - 6 → 8
printf("%d,%d\n", x, y);【解答例と解説】
14,8xとyの値の変化を順に追うことで解ける問題。
