基礎プロI 100本ノック 初級編

各プログラムにおいて、特に指定が無い限りは入力値が指定された形式であるかどうかをチェックする必要はない(例えば整数型の値を入力させるところでアルファベットを入力された場合など)。

No. 20 割って掛ける

整数値を2つ入力させ、1つめの値を2つめの値で割った結果を表示し、続けてその結果に2つめの値を掛けた結果を表示するプログラムを作成せよ。計算はすべて整数型で行うこと(割り切れない場合は自動的に小数点以下が切り捨てられる)。

【実行例、下線部は入力例】
$ ./knock20
input 1st value: 10
input 2nd value: 3
result: 3
result: 9
$

割りきれない場合、2つめの値を掛けても最初の1つめの値に戻らないことに注意。

No. 21 5より大きく20より小さい

整数値を入力させ、その値が5よりも大きく、かつ、20よりも小さければOKと表示するプログラムを作成せよ。

【実行例、下線部は入力例】
$ ./knock21
input number: 10
OK
$ ./knock21
input number: 5
$

No. 22 -10以下または10以上

整数値を入力させ、その値が-10以下、または、10以上であればOKと表示するプログラムを作成せよ。

【実行例、下線部は入力例】
$ ./knock22
input number: 10
OK
$ ./knock22
input number: 0
$

No. 23 -5以上10未満

整数値を入力させ、その値が-5以上10未満であればOK、そうでなければNGと表示するプログラムを作成せよ。

【実行例、下線部は入力例】
$ ./knock23
input number: 0
OK
$ ./knock23
input number: 10
NG
$

No. 24 -10以上0未満、または、10以上

整数値を入力させ、その値が-10以上0未満、または、10以上であればOK、そうでなければNGと表示するプログラムを作成せよ。

【実行例、下線部は入力例】
$ ./knock24
input number: -5
OK
$ ./knock24
input number: 10
OK
$ ./knock24
input number: 5
NG
$

No. 25 -10未満?、-10以上0未満?、0以上?

整数値を入力させ、その値が-10未満ならrange 1、-10以上0未満であればrange 2、0以上であればrange 3、と表示するプログラムを作成せよ。

【実行例、下線部は入力例】
$ ./knock25
input number: -15
range 1
$ ./knock25
input number: -10
range 2
$ ./knock25
input number: 0
range 3
$

No. 26 switch-case

整数値を入力させ、その値が1ならone、2ならtwo、3ならthree、それ以外ならothersと表示するプログラムをswicth-case文を使って作成せよ。

【実行例、下線部は入力例】
$ ./knock26
input number: 1
one
$ ./knock26
input number: 2
two
$ ./knock26
input number: 3
three
$ ./knock26
input number: 0
others
$

No. 27 1からnまでの和

整数値を入力させ、1からその値までの総和を計算して表示するプログラムを作成せよ。ただし、0以下の値を入力した場合は0と表示する。

【実行例、下線部は入力例】
$ ./knock27
input number: 10
sum = 55
$ ./knock27
input number: -2
sum = 0
$

No. 28 nの階乗

整数値を入力させ、その値の階乗を表示するプログラムを作成せよ。ただし、0以下の値を入力した場合は1と表示する。

【実行例、下線部は入力例】
$ ./knock28
input number: 10
factorial = 3628800
$ ./knock28
input number: -2
factorial = 1
$

No. 29 5つの合計

整数値を5回入力させ、それらの値の合計を表示するプログラムを繰り返しを使って作成せよ。

【実行例、下線部は入力例】
$ ./knock29
input number: 11
input number: 22
input number: 33
input number: 44
input number: 55
sum = 165
$

No. 30 棒グラフ

整数値を入力させ、その個数だけ*を表示するプログラムを作成せよ。入力値が0以下の値の場合は何も書かなくてよい。

【実行例、下線部は入力例】
$ ./knock30
input number: 7
*******
$ ./knock30
input number: 13
*************
$

*を改行せず入力値回だけ繰り返して表示し、繰り返しが終わったら改行\nだけ表示すればよい。

No. 31 棒グラフ改

整数値を入力させ、その個数だけ*を、5個おきに空白(スペース)を入れて表示するプログラムを作成せよ。入力値が0以下の値の場合は何も書かなくてよい。

【実行例、下線部は入力例】
$ ./knock31
input number: 7
***** **
$ ./knock31
input number: 13
***** ***** ***
$

No.30に加えて、カウンタ変数を5で割った余りが「特定の値」の場合にスペースを表示するようにすればよい。「特定の値」が何であるかは、繰り返し回数の数え方に依存する。

No. 32 5の倍数でbar

1から20まで順に表示するが、5の倍数の場合は数字の代わりにbarと表示するプログラムを作成せよ。

【実行例】
$ ./knock32
1
2
3
4
bar
6
(途中、7から18まで省略)
19
bar
$

No. 33 入力値抜き

整数値を入力させ、1から9まで、入力値以外を表示するプログラムを作成せよ。

【実行例、下線部は入力例】
$ ./knock33
input number: 7
1
2
3
4
5
6
8
9
$

No. 34 入力値抜き改

整数値を入力させ、1から9まで、入力値と入力値+1以外を表示するプログラムを作成せよ。入力値が9の場合は9のみ表示しない。

【実行例、下線部は入力例】
$ ./knock34
input number: 7
1
2
3
4
5
6
9
$

No. 35 配列要素の参照

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、整数値を入力させ、要素番号が入力値である配列要素の値を表示するプログラムを作成せよ。入力値が配列の要素の範囲外であるかどうかのチェックは省略してよい。

【実行例、下線部は入力例】
$ ./knock35
input index: 0
array[0] = 3
$ ./knock35
input index: 5
array[5] = 1
$

配列の初期化は

int array[10] = {3, 7, 0, 8, 4, 1, 9, 6, 5, 2};

のようにすればよい。

No. 36 続・配列要素の参照

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、整数値を2つ入力させ、要素番号が入力値である2つの配列要素の値の積を計算して表示するプログラムを作成せよ。入力値が配列の要素の範囲外であるかどうかのチェックは省略してよい。

【実行例、下線部は入力例】
$ ./knock36
input index1: 3
input index2: 6
8 * 9 = 72
$

配列の初期化は

int array[10] = {3, 7, 0, 8, 4, 1, 9, 6, 5, 2};

のようにすればよい。

No. 37 続々・配列要素の参照

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、整数値を入力させ、要素番号が入力値の配列要素の値を参照し、さらにその参照した値を要素番号とする配列要素の値を参照して表示するプログラムを作成せよ。入力値が配列の要素の範囲外であるかどうかのチェックは省略してよい。

【実行例、下線部は入力例】
$ ./knock37
input index: 8
value = 1
$

配列の初期化は

int array[10] = {3, 7, 0, 8, 4, 1, 9, 6, 5, 2};

のようにすればよい。

No. 38 さらに・配列要素の参照

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、最初は参照する要素番号を0とし、この参照する要素番号の配列要素の値を表示し、次にその配列要素の値を次の参照する要素番号とし、この次の参照する要素番号の配列要素の値を表示し、さらにその配列要素の値を次の参照する要素番号とし、……を10回繰り返すプログラムを作成せよ。(具体的にどのような手順かは実行例を見て考えよう。)

【実行例】
$ ./knock38
3
8
5
1
7
6
9
2
0
3
$

配列の初期化は

int array[10] = {3, 7, 0, 8, 4, 1, 9, 6, 5, 2};

のようにすればよい。結果は常に同じになるが固定的に値を表示するのではなく、指定された手順で表示するプログラムとすること。

No. 39 もっと・配列要素の参照

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、最初は参照する要素番号を0とする。この参照する要素番号の配列要素の値から次の要素番号の配列要素の値を引いた値を表示し、参照する要素番号を1増やす。この手順を9回繰り返すプログラムを作成せよ。(具体的にどのような手順かは実行例を見て考えよう。)

【実行例】
$ ./knock39
-4
7
-8
4
3
-8
3
1
3
$

配列の初期化は

int array[10] = {3, 7, 0, 8, 4, 1, 9, 6, 5, 2};

のようにすればよい。結果は常に同じになるが固定的に値を表示するのではなく、指定された手順で表示するプログラムとすること。