以下のプログラムは、配列aのデータを配列bにコピーし、内容を表示するものです。
ただし、データの移動は、全てポインタをもちいるものとする。
このとき、空欄1から5を埋めてプログラムを完成させなさい。
ただし、
[空欄1]では配列a
[空欄2]では配列b
[空欄3]ではポインタ変数pa, pb, int型変数 i, j
[空欄4]ではポインタ変数pa, int型変数 i, j
[空欄5]ではポインタ変数pb
と(必要ならば演算子)のみ使用すること。
注意:
ポインタに先頭アドレスを代入する際、その書式が、(1次元)配列と2次元配列とで違っていることに注意。
#include <stdio.h> main(){ int a[3][2] = {{1, 3},{3, -9},{2, 0}}; int b[3][2]; int *pa, *pb, i, j; pa = [空欄1]; /* 配列aの先頭アドレスをpaに格納 */ pb = [空欄2]; /* 配列bの先頭アドレスをpbに格納 */ /* a から bへのポインタ変数だけを用いたコピー */ for(i=0; i<3; i++){ for(j=0; j<2; j++){ [空欄3] } } /* b[][]のデータを表示 */ printf("matrix A\n"); for(i=0; i<3; i++){ for(j=0; j<2; j++){ printf("a[%d][%d]=%d", i, j, [空欄4]); } printf("\n"); } /* b[][]のデータを表示 */ printf("matrix B\n"); for(i=0; i<3; i++){ for(j=0; j<2; j++){ printf("b[%d][%d]=%d", i, j, *pb); [空欄5 (pb に関する演算)] } printf("\n"); } |
実行結果
matrix A a[0][0]=1 a[0][1]=3 a[1][0]=3 a[1][1]=-9 a[2][0]=2 a[2][1]=0 matrix B b[0][0]=1 b[0][1]=3 b[1][0]=3 b[1][1]=-9 b[2][0]=2 b[2][1]=0 |