プログラム制作II 実力テスト(1月11日 4限)
とその解答例
問1:
以下のプログラムの動作時の出力を示しなさい。但し stdio.h の include は略 しています。
[1.1] int cube(int i) { return i * i * i; } main() { int i; for (i=0;i<=4;i++) printf("%d^3=%d\n",i,cube(i)); }
0^3=0 1^3=1 2^3=8 3^3=27 4^3=64
問2:
以下のそれぞれのC言語で書かれたプログラムの、「」でかこまれた(空白)部 分を埋め、プログラムを完成させなさい。但し stdio.h の include は略してい ます。
[2.1] 1を画面に表示させます。 main() { int a; int *c; a = 1 ; c = 「 (1) 」; printf("%「 (2) 」\n", 「 (3) 」c); }
(1):「&a」 (2):「d」 (3):「*」
問3:
データの並びかえ(ソート)には、バブルソート、バケツソート、クイックソー トなどいくつかの知られたアルゴリズムがあります。そのいずれかについて解説 しなさい。出来るだけC言語のソースコードをそえて、さらに可能ならば2種類 以上のアルゴリズムについて比較しながら説明するほうが望ましいです。
超簡単にいうと、
バブルソート: 単純に大きい(小さい?)ものを順々に探していくやりかた。効率はかなり悪い。
バケツソート: キーに対応する場所を事前に用意しておき、割りふった後そこにデータがあるか どうかをチェックする。処理効率は良いが、メモリ効率は悪い。
クイックソート: 全体を大小2分割するというのを、適用できなくなるまで再帰的に繰り返す。 効率はかなり良い。
本来はもうちょっと詳しく解説し、ソースコードがあるとなおよし、です。