
C++入門|2章の練習問題
2章で覚えたC++の基本技を、練習問題で実戦確認。cinで受け取り、coutで表示し、if文とfor文で修行ミッションをクリアしよう。
ここまでの2章では、C++の基本として、cinによる入力、coutによる出力、stringによる文字列の扱い、if文による条件分岐、for文による繰り返しなどを学んできました。
このあたりの文法は、1つずつ見るとそれほど難しくありません。
ただし、実際のプログラムでは、これらを組み合わせて使うことがとても大切です。
たとえば、キーボードから整数を入力し、その値が条件を満たすかどうかを調べて、結果を表示する。
あるいは、文字列と回数を入力し、その文字列を指定された回数だけ表示する。
このような処理は、C++の基本練習としてとても重要です。
ドラゴンボール風にたとえるなら、2章で学んだ内容は、C++修行場で覚えた基本技です。
cinは、修行端末から値を受け取る技。
coutは、結果を表示パネルへ送る技。
if文は、スカウターの判定によって進む道を変える技。
for文は、同じ修行メニューを決められた回数だけ繰り返す技です。
今回の練習問題では、次の2つを確認します。
| 練習問題 | 確認する内容 | ドラゴンボール風のイメージ |
|---|---|---|
| 問題2-1 | 整数を入力し、条件で表示を分ける | 戦闘力が基準を超えたか判定する |
| 問題2-2 | 文字列と回数を入力し、繰り返し表示する | 修行の掛け声を指定回数だけ唱える |
どちらの問題も、2章で学んだC++の基本を確認するためのものです。
まずは問題文を読み、自分で考えてから、ヒント、解答例、解説の順に確認していきましょう。
図:2章の練習問題で確認するC++の基本技

この図が示していること
この図では、2章の練習問題で確認するC++の基本的な流れを表しています。
cinでキーボードから値を受け取り、if文で条件を判定し、for文で必要な回数だけ処理を繰り返し、coutで結果を表示します。
入力、判定、繰り返し、表示という流れは、C++の基本プログラムで何度も登場します。
この流れを練習問題でしっかり確認しておくと、次の内容にも進みやすくなります。
問題2-1:戦闘力が100より大きいか判定する
問題文
キーボードから整数値を入力させ、その数値が100より大きければ「100より大きい」、100以下であれば「100以下」と表示するプログラムを作りなさい。
なお、キーボードからの入力にはcin、文字の表示にはcoutを使うこと。
期待される実行結果①:100より大きい整数が入力された場合
戦闘力を入力:150
100より大きい期待される実行結果②:100以下の整数が入力された場合
戦闘力を入力:80
100以下この問題では、整数の入力、if文による条件分岐、coutによる表示を確認します。
ドラゴンボール風にたとえるなら、修行場のスカウターが、入力された戦闘力を見て「100を超えているかどうか」を判定するミッションです。
プログラムを作成するヒント
この問題では、まず整数を入れるための変数を用意します。
int power;次に、coutで入力を促すメッセージを表示します。
cout << "戦闘力を入力:";そして、cinでキーボードから入力された整数をpowerに入れます。
cin >> power;入力された値が100より大きいかどうかは、if文で判定します。
if (power > 100) {
100より大きい場合の処理
}
else {
100以下の場合の処理
}今回の条件式は、次のようになります。
power > 100この条件が成り立つ場合は、100より大きいと表示します。
成り立たない場合は、100以下と表示します。
| 入力値 | 条件 power > 100 | 表示 |
|---|---|---|
| 150 | true | 100より大きい |
| 101 | true | 100より大きい |
| 100 | false | 100以下 |
| 80 | false | 100以下 |
100は「100より大きい」ではありません。
そのため、100を入力した場合は100以下と表示されます。
プログラムの解答例
プロジェクト名/ファイル名: Prac2_1/main.cpp
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
// 戦闘力を入れる変数を宣言する
int power;
// キーボードから整数値を入力する
cout << "戦闘力を入力:";
cin >> power;
// 入力された戦闘力が100より大きいかを判定する
if (power > 100) {
cout << "100より大きい" << endl;
}
else {
cout << "100以下" << endl;
}
// プログラムが正常に終わったことを示す
return 0;
}解説
このプログラムでは、キーボードから整数値を入力し、その値が100より大きいかどうかを判定しています。
最初に、整数を保存するための変数powerを宣言しています。
int power;powerは、入力された戦闘力を入れておくための変数です。
次に、coutで入力を促しています。
cout << "戦闘力を入力:";このように表示しておくと、実行した人は「ここで戦闘力を入力すればよい」と分かります。
そのあと、cinで入力された整数をpowerに代入しています。
cin >> power;cinは、キーボードから入力された値を変数へ入れるために使います。
ここでは、入力された整数がpowerに入ります。
判定しているのは、次のif文です。
if (power > 100) {
cout << "100より大きい" << endl;
}
else {
cout << "100以下" << endl;
}if文は、条件式がtrueの場合にif側の処理を実行します。
条件式がfalseの場合は、else側の処理を実行します。
今回の条件式は、power > 100です。
| 条件式 | 意味 |
|---|---|
| power > 100 | powerが100より大きいかどうか |
| true | 100より大きい |
| false | 100以下 |
たとえば、powerに150が入っている場合、150 > 100はtrueです。
そのため、100より大きいと表示されます。
一方、powerに80が入っている場合、80 > 100はfalseです。
そのため、else側に進み、100以下と表示されます。
ドラゴンボール風にいえば、スカウターが戦闘力を測定し、100を超えていれば「高出力修行モード」、100以下なら「基礎修行モード」と判定しているようなものです。
図:if文で100より大きいかを判定する

この図が示していること
この図では、入力された戦闘力をif文で判定する流れを表しています。
power > 100がtrueなら、100より大きいと表示します。
falseなら、100以下と表示します。
if文では、条件式が成り立つかどうかによって、実行する処理を分けることができます。
この問題は、C++の条件分岐を確認する基本練習です。
問題2-1で確認したいポイント
この問題では、次の内容を確認できます。
| 確認ポイント | 内容 |
|---|---|
| int型 | 整数を扱う |
| cin | キーボードから値を入力する |
| cout | 文字を表示する |
| if文 | 条件が成り立つか判定する |
| else | 条件が成り立たない場合の処理を書く |
| >演算子 | 左の値が右の値より大きいか調べる |
特に大切なのは、if文の条件式です。
power > 100この式がtrueかfalseかによって、表示される内容が変わります。
C++では、このように入力された値を条件式で判定し、結果によって処理を分けるプログラムをよく作ります。
問題2-2:入力した修行メッセージを指定回数だけ表示する
問題文
キーボードから文字列と数値を入力させ、最初に入力した文字列を、入力した数値の回数だけ表示するプログラムを作りなさい。
なお、キーボードからの入力にはcin、文字の表示にはcoutを使うこと。
期待される実行結果
修行メッセージを入力:PowerUp
表示回数:3
PowerUp
PowerUp
PowerUpこの問題では、string型による文字列入力、int型による回数入力、for文による繰り返し表示を確認します。
ドラゴンボール風にたとえるなら、修行場で入力した掛け声を、指定した回数だけ唱えるトレーニングです。
プログラムを作成するヒント
まず、入力された文字列を入れるためにstring型の変数を用意します。
string message;stringを使うために、stringヘッダーを読み込みます。
#include <string>次に、表示回数を入れるためにint型の変数を用意します。
int count;
文字列の入力は、cinで行います。
cin >> message;表示回数も、cinで入力できます。
cin >> count;入力された文字列を指定回数だけ表示するには、for文を使います。
for (int i = 0; i < count; i++) {
cout << message << endl;
}このfor文では、iが0から始まり、i < countが成り立つ間だけ繰り返します。
たとえばcountが3なら、iは0、1、2の3回分だけ動きます。
| countの値 | iの動き | 表示回数 |
|---|---|---|
| 1 | 0 | 1回 |
| 2 | 0, 1 | 2回 |
| 3 | 0, 1, 2 | 3回 |
for文では、繰り返したい処理を中カッコの中に書きます。
今回繰り返したい処理は、messageを表示する処理です。
プログラムの解答例
プロジェクト名/ファイル名: Prac2_2/main.cpp
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv) {
// 入力された修行メッセージを入れる変数を宣言する
string message;
// 表示回数を入れる変数を宣言する
int count;
// キーボードから文字列を入力する
cout << "修行メッセージを入力:";
cin >> message;
// キーボードから表示回数を入力する
cout << "表示回数:";
cin >> count;
// 入力された文字列を指定された回数だけ表示する
for (int i = 0; i < count; i++) {
cout << message << endl;
}
// プログラムが正常に終わったことを示す
return 0;
}解説
このプログラムでは、キーボードから文字列と表示回数を入力し、その文字列を指定された回数だけ表示しています。
まず、文字列を入れるための変数messageを宣言しています。
string message;string型は、C++で文字列を扱うための便利な型です。
修行メッセージ、技名、名前、合言葉などを扱うときに使えます。
stringを使うため、プログラムの先頭ではstringヘッダーを読み込んでいます。
#include <string>次に、表示回数を入れるための変数countを宣言しています。
int count;countには、何回表示するかを表す整数が入ります。
文字列を入力する部分は、次のようになっています。
cout << "修行メッセージを入力:";
cin >> message;coutで入力を促し、cinで入力された文字列をmessageに入れています。
続いて、表示回数を入力します。
cout << "表示回数:";
cin >> count;ここで入力された数値がcountに入ります。
最後に、for文でmessageをcount回表示します。
for (int i = 0; i < count; i++) {
cout << message << endl;
}このfor文の中では、iという変数を使って繰り返し回数を数えています。
| 部分 | 意味 |
|---|---|
| int i = 0 | iを0から始める |
| i < count | iがcountより小さい間だけ繰り返す |
| i++ | 1回終わるごとにiを1増やす |
| cout << message << endl; | messageを表示して改行する |
たとえば、countに3が入っている場合、iは次のように変化します。
| 繰り返し | iの値 | 条件 i < count | 表示 |
|---|---|---|---|
| 1回目 | 0 | true | messageを表示 |
| 2回目 | 1 | true | messageを表示 |
| 3回目 | 2 | true | messageを表示 |
| 終了判定 | 3 | false | 表示しない |
iが0、1、2の間は、i < countが成り立ちます。
そのため、messageが3回表示されます。
iが3になると、i < countが成り立たなくなるため、for文は終了します。
ドラゴンボール風にいえば、countは修行メニューの回数札です。
for文は、その回数札に書かれた回数だけ、修行メッセージを表示パネルに出します。
図:for文で文字列を指定回数だけ表示する

この図が示していること
この図では、入力された文字列をfor文で指定回数だけ表示する流れを表しています。
messageにPowerUpが入り、countに3が入っています。
for文はiを0から始め、i < countが成り立つ間だけ繰り返します。
countが3なので、iは0、1、2の3回分だけ動き、PowerUpが3回表示されます。
問題2-2で確認したいポイント
この問題では、次の内容を確認できます。
| 確認ポイント | 内容 |
|---|---|
| string型 | 文字列を扱う |
| int型 | 表示回数を扱う |
| cin | 文字列や整数を入力する |
| cout | 文字列を表示する |
| for文 | 同じ処理を指定回数だけ繰り返す |
| endl | 表示後に改行する |
特に大切なのは、文字列と数値を別々の変数で受け取り、それらを組み合わせて処理している点です。
cin >> message;
cin >> count;この2つの入力によって、何を表示するか、何回表示するかが決まります。
そのあと、for文でmessageをcount回表示しています。
for (int i = 0; i < count; i++) {
cout << message << endl;
}この形は、C++の繰り返し処理でとてもよく使います。
2つの練習問題で確認した流れ
今回の2つの練習問題は、どちらもC++の基本を組み合わせて作っています。
問題2-1では、整数を入力して条件判定を行いました。
問題2-2では、文字列と回数を入力して繰り返し表示を行いました。
| 問題 | 入力 | 処理 | 出力 |
|---|---|---|---|
| 問題2-1 | 整数 | 100より大きいか判定 | 判定結果を表示 |
| 問題2-2 | 文字列と回数 | 指定回数だけ繰り返す | 文字列を複数回表示 |
このように、C++では、入力、処理、出力の流れを考えることがとても大切です。
ドラゴンボール風に言えば、修行端末から値を受け取り、スカウターや修行装置で判定・繰り返し処理を行い、最後に表示パネルへ結果を出す流れです。
2章の練習問題で身につけたい考え方
2章の練習問題では、文法を暗記するだけではなく、次のような考え方を身につけることが大切です。
| 考え方 | 内容 |
|---|---|
| 入力された値は変数に入れる | cinで受け取り、あとで使えるようにする |
| 条件で処理を分ける | if文でtrueかfalseを判定する |
| 同じ処理は繰り返しで書く | for文を使って効率よく処理する |
| 結果はcoutで確認する | プログラムの動きを画面で確認する |
| 変数の型を意識する | 整数はint、文字列はstringを使う |
C++の基本は、1つずつの文法を組み合わせていくことで身につきます。
最初は短いプログラムでも大丈夫です。
入力して、判定して、表示する。
入力して、回数分だけ繰り返す。
このような小さな練習を重ねることで、C++のコードを自分で組み立てる力が少しずつ育っていきます。
2章で押さえておきたい確認ポイント
最後に、2章の練習問題で確認したポイントを整理しておきます。
| 項目 | 内容 |
|---|---|
| cin | キーボードから値を入力する |
| cout | コンソールに文字を表示する |
| int | 整数を扱う |
| string | 文字列を扱う |
| if文 | 条件によって処理を分ける |
| else | 条件が成り立たない場合の処理を書く |
| for文 | 同じ処理を繰り返す |
| >演算子 | 大きさを比較する |
| endl | 改行する |
2章で学んだ内容は、C++プログラムの基本技です。
ドラゴンボール風に言えば、cinは入力の技、coutは表示の技、if文は判定の技、for文は反復修行の技です。
これらを組み合わせられるようになると、C++で作れるプログラムの幅が一気に広がります。
練習問題を通して、入力、判定、繰り返し、表示の流れをしっかり体に覚えさせていきましょう。
