配列

問題1 整数型の配列定義

プログラムの出力結果が

1,2,3,4,5,6,7,8,9,10

となるように整数型配列dataを初期化しましょう。

問題2 配列の走査(順方向)

5つの引数を取り、配列に格納したあと、その配列から一番小さな数字を探して表示するプログラムを作成しましょう。

例えば

./a.out 5 2 1 4 3

とコマンドを入力すると

1

と表示されます。

問題3 配列の走査(逆方向)

プログラムに引数を5つ渡して、渡した順番と逆に引数を表示するプログラムを作成しましょう。

例えば

./a.out 1 2 3 4 5

と実行すると

5
4
3
2
1

と表示されます。

問題4 配列のデータの入れ替え

プログラムでは整数型配列変数dataについて、

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

と定義されています。

printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9]);

プログラムを実行すると出力結果は

0,1,2,3,4,5,6,7,8,9

となります。

これを

9,8,7,6,5,4,3,2,1,0

と表示するようにprintf文の前に配列の要素を入れ替える文を入れましょう。

問題5 2個飛ばしでのアクセス

プログラムでは整数型配列変数dataを

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

と定義しています。

何個飛ばしで配列の中身を表示するか引数で与えて実行できるようにプログラムを変更しましょう。

例えば

./a.out 2

とやると

0
2
4
6
8

と表示されます。

問題6 多次元配列の初期化と操作

プログラムでは、

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

と配列が定義されています。

プログラムを実行すると

1,2,3,
4,5,6,
7,8,9,

と表示するようにfor文を2回使ってプログラムを修正しましょう。

問題7 多次元配列へのアクセス

3次元正方行列Aのトレース(対角成分の和)を求めるプログラムを作成しましょう。 なお,行列はプログラム引数として指定されるとします。

例えば

./a.out 1 2 3 4 5 6 7 8 9

と実行すると以下のような行列になるはずなので(都合により括弧を外してます)

1 2 3
4 5 6
7 8 9

この場合のトレースは1+5+9で15になり

15

と出力されます。

問題8 多次元配列同士の演算

3次元正方行列AとBがあります。 行列Aはユーザによって入力され,行列Bは以下だとします。

1 0 0
0 0 -1
0 1 0

この時、積ABの結果を出力するプログラムを作成しましょう。

例えば

./a.out 1 2 3 4 5 6 7 8 9

と実行すると

1,3,-2,
4,6,-5,
7,9,-8,

と表示されるようにします。

問題9 多次元配列の定義

プログラムには以下のprintf文があります。

printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",data[0][1],data[2][2],data[1][0],data[0][0],data[1][1],data[2][0],data[0][2],data[2][1],data[1][2]);

プログラムの出力結果が

0,1,2,3,4,5,6,7,8

となるように整数型2次元配列dataを定義しましょう。

問題10 多次元配列における入れ替え

引数で与えられた3x3の正方行列Aを転置して表示するプログラムを作成しましょう。

例えば、

./a.out 1 2 3 4 5 6 7 8 9

と実行すると

1,4,7,
2,5,8,
3,6,9,

と表示されるようにします。