C++入門|1章の練習問題

1章で覚えた基本技を、いよいよ実戦形式で確認しよう。printfでメッセージを表示し、for文で同じ処理を繰り返せば、C言語修行の第一段階をしっかり突破できます。

ここまで、C言語の基本として、プログラムの書き方、printf関数、エスケープシーケンス、変数、演算、for文、while文、配列、関数などを学んできました。

ただ、プログラミングは読むだけではなかなか身につきません。
実際に自分でコードを書き、実行して、思ったとおりの結果が表示されるかを確認することが大切です。

ドラゴンボール風にたとえるなら、ここまでは技の型を学ぶ基礎修行でした。
そしてここからは、覚えた技を実際に使ってみる確認バトルです。

最初から難しい問題に挑戦する必要はありません。
まずは、printfで文字を表示する問題、for文で同じ表示を繰り返す問題を通して、C言語の基本動作をしっかり確認していきましょう。

今回の練習問題では、次の2つを扱います。

練習問題確認する内容ドラゴンボール風のイメージ
問題1-1printfで文字列を表示する修行者名を表示パネルに出す
問題1-2for文で同じ文字列を繰り返し表示する同じ掛け声を決めた回数だけ唱える

どちらも短いプログラムですが、C言語の基礎としてとても大切です。

printfでは、文字列をコンソールに表示する方法を確認します。
for文では、同じ処理を何度も繰り返す方法を確認します。

この2つがしっかり分かっていると、今後の変数、条件分岐、繰り返し、配列、関数の学習にもつながっていきます。

図:1章の練習問題で確認する基本技

この図が示していること

この図では、1章の練習問題で確認する内容を表しています。

左側では、printfを使って文字列を表示する練習を表しています。
右側では、for文を使って同じ文字列を複数回表示する練習を表しています。

どちらもC言語の基本的な処理です。
まずは表示できること、次に繰り返し表示できることを確認することで、プログラムの流れをつかみやすくなります。

練習問題に取り組む前に確認しておきたいこと

練習問題では、いきなり答えを見るのではなく、まず自分で考えてみることが大切です。

プログラムは、正解を暗記するよりも、どのような順番で考えればよいかを身につけることが大事です。

たとえば、printfの問題なら、次のように考えます。

考えること内容
何を表示するのか表示したい文字列を確認する
改行は必要か\nを付けるか確認する
どの関数を使うかprintfを使う
ヘッダーファイルは必要かstdio.hを読み込む

for文の問題なら、次のように考えます。

考えること内容
何回繰り返すのか表示回数を確認する
何を繰り返すのかfor文の中に書く処理を確認する
カウンター変数は必要かiなどの変数を用意する
条件式は正しいか回数がずれないようにする

ドラゴンボール風に言えば、いきなり技を放つのではなく、まず構えを確認するようなものです。
何をするのか、何回するのか、どこで終わるのかを確認してからコードを書くと、ミスを減らせます。

問題1-1:printf関数で修行者名を表示する

問題文

printf関数を使って、コンソール画面に次の文字列を表示するプログラムを作りなさい。

修行者:ヒロ

なお、文字列の最後には改行を表すエスケープシーケンスを入れること。

期待される実行結果は、次のとおりです。

修行者:ヒロ

この問題では、printf関数を使って文字列を表示する基本を確認します。

ドラゴンボール風にたとえるなら、修行場の表示パネルに、これから修行に参加する戦士の名前を表示するようなイメージです。

プログラムを作成するヒント

この問題では、次の点を意識しましょう。

ヒント内容
stdio.hを読み込むprintfを使うために必要
main関数を書くプログラムの開始地点
printfを使う文字列をコンソールに表示する
文字列をダブルクォーテーションで囲む表示したい文字を文字列として扱う
\nを入れる表示後に改行する
return 0;を書く正常終了を示す

printfで文字列を表示するときは、次の形を意識します。

printf("表示したい文字列\n");

今回表示したい文字列は、修行者:ヒロです。
そのため、printfの中に修行者:ヒロ\nを書けば、表示後に改行できます。

プログラムの解答例

プロジェクト名/ファイル名: Prac1_1/main.c

#include <stdio.h>

int main(int argc, char** argv) {
    // 修行者の名前をコンソールに表示する
    printf("修行者:ヒロ\n");

    // プログラムが正常に終わったことを示す
    return 0;
}

解説

このプログラムでは、printf関数を使って、修行者:ヒロという文字列を表示しています。

printf("修行者:ヒロ\n");

printfは、コンソール画面に文字を表示するための関数です。
printfを使うためには、プログラムの先頭でstdio.hを読み込んでおきます。

#include <stdio.h>

stdio.hは、標準入出力に関する機能を使うためのヘッダーファイルです。
printfは標準出力、つまりコンソールへ文字を表示する機能なので、stdio.hが必要になります。

記述役割
#include <stdio.h>printfを使う準備
int main(int argc, char** argv)プログラムの開始地点
printf文字列を表示する関数
\n改行を表すエスケープシーケンス
return 0;正常終了を示す

文字列は、ダブルクォーテーションで囲みます。

"修行者:ヒロ\n"

この中にある\nは、改行を表すエスケープシーケンスです。
これがあることで、文字列を表示したあと、カーソルが次の行へ移動します。

ドラゴンボール風にたとえるなら、printfは修行装置の表示パネルにメッセージを出す技です。
修行者:ヒロという文字列を渡すことで、表示パネルにその名前が表示されます。

この問題では、C言語プログラムの最も基本的な流れを確認しています。

  1. stdio.hを読み込む
  2. main関数から処理を始める
  3. printfで文字列を表示する
  4. return 0で正常終了する

この流れは、今後のプログラムでも何度も使います。

図:printfで文字列を表示する流れ

この図が示していること

この図では、printfで文字列を表示する流れを表しています。

左側のコード巻物に書かれたprintfが実行されると、右側のコンソール画面に修行者:ヒロと表示されます。

文字列の最後にある\nは、改行を表します。
そのため、表示後に次の行へ移動します。

printfは、C言語で画面に文字を表示するための基本技です。
この問題では、その基本技をしっかり確認できます。

問題1-2:for文で修行メッセージを4回表示する

問題文

for文を使って、次の文字列を4回表示するプログラムを作りなさい。

C言語修行!

期待される実行結果は、次のとおりです。

C言語修行!
C言語修行!
C言語修行!
C言語修行!

この問題では、for文を使って同じ処理を繰り返す方法を確認します。

ドラゴンボール風にたとえるなら、同じ修行の掛け声を4回くり返す特訓です。
同じprintfを4回書くのではなく、for文を使って効率よく繰り返すことがポイントです。

プログラムを作成するヒント

この問題では、次の点を意識しましょう。

ヒント内容
for文を使う同じ処理を繰り返す
カウンター変数を用意する何回目かを数える
4回繰り返す条件を書くi < 4のように条件を決める
printfをfor文の中に書く繰り返したい処理を中カッコ内に入れる
\nを入れる1回表示するごとに改行する

for文の基本形は、次のようになります。

for (初期化処理; 条件式; 増分処理) {
    繰り返したい処理
}

4回繰り返したい場合は、たとえばiを0から始めて、i < 4の間だけ処理を行うようにできます。

for (i = 0; i < 4; i++) {
    printf("C言語修行!\n");
}

iは0、1、2、3と変化します。
この4つの値の間だけ処理が実行されるため、printfが4回実行されます。

プログラムの解答例

プロジェクト名/ファイル名: Prac1_2/main.c

#include <stdio.h>

int main(int argc, char** argv) {
    // 繰り返し回数を数える変数を宣言する
    int i;

    // C言語修行!という文字列を4回表示する
    for (i = 0; i < 4; i++) {
        printf("C言語修行!\n");
    }

    // プログラムが正常に終わったことを示す
    return 0;
}

解説

このプログラムでは、for文を使って、C言語修行!という文字列を4回表示しています。

for (i = 0; i < 4; i++) {
    printf("C言語修行!\n");
}

for文は、同じ処理を決められた回数だけ繰り返したいときに使います。

このfor文は、次の3つの部分でできています。

部分記述意味
初期化処理i = 0iを0から始める
条件式i < 4iが4より小さい間、繰り返す
増分処理i++1回終わるごとにiを1増やす

iの値は、次のように変化します。

繰り返しiの値条件 i < 4表示
1回目0成り立つC言語修行!
2回目1成り立つC言語修行!
3回目2成り立つC言語修行!
4回目3成り立つC言語修行!
終了判定4成り立たない表示しない

iが0、1、2、3のときは、i < 4が成り立ちます。
そのため、for文の中にあるprintfが実行されます。

iが4になると、i < 4が成り立たなくなります。
そこでfor文の繰り返しは終了します。

ドラゴンボール風にたとえるなら、iは修行回数を数えるカウンターです。
0回目、1回目、2回目、3回目の4回分だけ掛け声を出し、4になったところで修行装置が終了と判断します。

この問題で大切なのは、for文の中に繰り返したい処理を書くことです。

printf("C言語修行!\n");

このprintfがfor文の中にあるため、4回繰り返されます。
もしprintfがfor文の外にあれば、1回しか表示されません。

printfを書く場所結果
for文の中繰り返し表示される
for文の外1回だけ表示される

for文では、中カッコの中に書いた処理が繰り返されます。
そのため、何を繰り返したいのかを意識して、中カッコの中に正しく書くことが大切です。

図:for文で同じ文字列を4回表示する流れ

この図が示していること

この図では、for文を使って同じ文字列を4回表示する流れを表しています。

iは0から始まり、1回処理が終わるごとにi++で1ずつ増えます。
iが0、1、2、3の間は、i < 4が成り立つため、printfが実行されます。

iが4になると、i < 4が成り立たなくなり、for文は終了します。

このように、for文では、初期化処理、条件式、増分処理を使って、繰り返し回数をコントロールできます。

練習問題で確認したいC言語の基本

今回の練習問題では、C言語の基本となる2つの処理を確認しました。

1つ目は、printfで文字列を表示する処理です。
2つ目は、for文で同じ処理を繰り返す処理です。

練習問題確認した内容重要ポイント
問題1-1printfで文字列を表示する文字列、\n、stdio.hを確認する
問題1-2for文で繰り返し表示する初期化、条件式、増分処理を確認する

printfは、C言語のプログラムで結果を確認するためによく使います。
for文は、同じ処理を何度も行うためにとてもよく使います。

ドラゴンボール風に言えば、printfは修行結果を表示するパネル操作、for文は同じ技を決めた回数だけ繰り返す修行メニューです。

この2つを使えるようになると、C言語でできることが一気に広がります。

自分で少し変えて試してみよう

練習問題を解いたあとは、少しだけ内容を変えて試してみるのもおすすめです。

たとえば、問題1-1では、表示する名前を変えてみましょう。

printf("修行者:ユウ\n");

問題1-2では、表示する回数を変えてみましょう。

for (i = 0; i < 6; i++) {
    printf("C言語修行!\n");
}

このように少し変えて実行すると、どの部分を変えれば結果が変わるのかが分かりやすくなります。

変える場所結果
printfの文字列表示されるメッセージが変わる
for文の条件式繰り返し回数が変わる
\nの有無改行されるかどうかが変わる

プログラミングの練習では、ただ答えを写すだけでなく、少し変えて動かしてみることが大切です。

修行でいえば、同じ型を覚えたあとに、少しスピードや回数を変えて試してみるようなものです。
そうすることで、コードの意味が自分の中でしっかりつながっていきます。

1章の練習問題で身につけたい感覚

1章の練習問題では、難しい計算や長いプログラムを書くことよりも、基本の形を確実に身につけることが大切です。

まず、C言語のプログラムはmain関数から始まります。
printfを使えば、コンソールに文字列を表示できます。
for文を使えば、同じ処理を決めた回数だけ繰り返せます。

この感覚が身についてくると、次に変数、配列、関数を使うときにも理解しやすくなります。

身につけたい感覚内容
プログラムはmain関数から始まる処理の入口を意識する
printfで結果を表示する実行結果を確認できる
\nで改行する見やすい出力を作れる
for文で繰り返す同じ処理を効率よく実行できる
条件式で回数を制御する何回実行されるかを考えられる

C言語の学習は、ひとつずつ小さな技を覚えていく修行のようなものです。

最初はprintfで表示するだけでも十分です。
次にfor文で繰り返せるようになると、同じ処理を何度も書かずに済みます。

この2つの基本技を使えるようになれば、次のステップへ進む準備はしっかり整っています。