プログラミング実習II (2025) 課題
[T6] 第6章 配列(1)
(T6_1) [リスト 6.2][リスト 6.4],キックオフC言語 8.1節 を参考に,整数を配列に格納して表示するプログラムを作成せよ.
- 要素数 4 の int 型配列 a を定義し,a[ 0 ],…,a[ 3 ] に順に 80, 75, 50, 90 を代入する.
- for 文を用いずに,a[ 0 ], ..., a[ 3 ] を順に表示せよ.それに続いて,for 文を用いて,a[ 0 ], ..., a[ 3 ] を順に表示してみよ.
- a[ -1 ] や a[ 5 ] を表示したときの実行結果を観察せよ(提出の際はこの printf 文は削除する).
実行結果,およびそのようになった原因や配列を扱う際に注意すべき事項を考察してレポートに記せ.「C言語によるプログラミング」6.2節,「キックオフC言語」8.1節が参考になる.
- for 文を用いずに,a[ 0 ] 〜 a[ 3 ] の和を求めて表示せよ.それに続いて,for 文を用いて,a[ 0 ] 〜 a[ 3 ] の和を求めて表示してみよ.
(T6_2) [リスト 6.2]を参考にして,配列に整数を格納し,指定された要素を表示するプログラムを作成せよ.
- 5 個の要素を持つ int 型配列 prize を宣言する.
- プログラム内で,下表に示す k 等の賞金を,配列 prize[ k-1 ] に格納する.
- キーボードから 1 以上 5 以下の整数を 1 個受け取る.
while 文を用いて,1 以上 5 以下の整数が得られるまで数字の入力を要求すること(例えば,「 1 以上 5 以下の値を入力して下さい」と表示する).
- 受け取った数字の等数と賞金を表示せよ.例えば,3 である場合は「 3 等 3000 円」のように表示する.
1等 |
10000円 |
2等 |
5000円 |
3等 |
3000円 |
4等 |
1000円 |
5等 |
500円 |
(T6_3) [リスト 6.4] を参考に,配列に実数を格納し,表示するプログラムを作成せよ.
- 要素数 5 の double 型の配列 sec と mps を定義する.
- プログラム内で,5 人の 50 メートル走のタイム( 7.2, 6.7, 8.3,6.9,7.7 )を配列 sec に格納する.ただし,単位を秒と考える.
- 各自の秒速(単位は メートル/秒 とする)を求めて,配列 mps の各要素として代入する.for 文を用いること( mps[ i ] は,50.0 を sec[ i ] で割った値です).
- for 文を用いて,配列 sec と配列 mps のすべての要素を表示する.
表示例(printf の書式をそれぞれ %.1f %.2f とした場合):
7.2 秒 6.94 m/秒
6.7 秒 7.46 m/秒
8.3 秒 6.02 m/秒
6.9 秒 7.24 m/秒
7.7 秒 6.49 m/秒
(T6_4) (T6_3) で作成したプログラムに以下の変更を加えよ.
- 教科書 pp.246-248 参照(キックオフ C言語は p. 124)を参考にして,配列の要素数を表すマクロ定数 N を定義せよ.
さらに,プログラム内で該当する数字をすべて N で置き換えた上で,正しく実行されることを確認せよ.
マクロ定数 N を用いることによって,どのようなことが便利になると考えられるか,教科書 6.4節を参考にしてレポートに記せ.
- 教科書 pp. 260-262 (キックオフC言語は,pp. 126-127)を参考にして,配列 sec の値の初期化を以下のように行う.
double sec[ N ] = { 7.2, 6.7, 8.3, 6.9, 7.7, };
|
(補足)最後のコンマ("{ .., 7.7, };")は,入れても入れなくても有効で,問題なくコンパイルされます.
- 「C言語によるプログラミング」 p.263 にはコンマを入れる例が掲載されています
- 「キックオフC言語」には,入れた例と入れない例が両方見られますが, p. 126 にてコンマを入れておく意義が記されています.
- C 言語では伝統的にはコンマを入れない書き方が一般的でしたが,最近は要素の変更や追加などの際のミスを防ぐといった観点から,入れる書き方が増えています.
(T6_5) マクロ定数 N を 10 とする.要素数が N である配列 a を定義せよ.さらに,for 文を用いて a[ i ] に i の 2 乗を代入した上で以下の表示を行え(キーボードから受け取る値に対する例外処理は不要).
- for 文を用いて,配列 a の要素を順に表示せよ.0, 1, 4, 9, 16, 25, 36, 49, 64, 81, が表示される.
- 続いて,(配列 a は変更せずに)for 文を用いて配列 a の要素を逆順に表示せよ.81, 64, 49, 36, 25, 16, 9, 4, 1, 0, が表示される.
- 次に,キーボードから N 未満の負でない整数 m を受け取る. for 文を用いて,配列 a の添字が m である要素 a[ m ] から順に N 個の要素を表示せよ.ただし,a[ N-1 ] に続いて a[ 0 ],a[ 1 ],…を表示することとし,この表示のために for 文を 1 回のみ用いることとする. m = 6 なら 36, 49, 64, 81, 0, 1, 4, 9, 16, 25, が表示される.
- キーボードから N 未満の負でない整数 n (≠ m ) を受け取る.a[ m ] と a[ n ] の要素を入れ替えよ.その上で,配列 a の要素を順に表示せよ.m = 6, n = 3 であれば 0, 1, 4, 36, 16, 25, 9, 49, 64, 81, が表示される.
入れ替えの際には,下に示す 2 個のプログラムについて考察するとよい.
int x = 5, y = 3;
x = y;
y = x;
|
int x = 5, y = 3, tmp;
tmp = x;
x = y;
y = tmp;
|