以下のプログラムは、配列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 |