C 一維陣列轉換為二維陣列 求解

利用scanf输入二维阵列的行列数,若输入0则停止,接着输入一维阵列,会输出指定行列数的二维阵列
输入:
2 3
1 2 3 4 5 6
输出:
1 2 3
4 5 6

我的程式码:
int main(void) {
int i,j,row,col;
int b[row][col],a[row*col];
while(scanf("%d %d",&row,&col)){
if(row==0||col==0)
break;
for(i = 0; i < row; ++i){
for(j = 0; j < col; ++j){
scanf("%d" , &a[j]);
b[i][j] = a[i * col + j];
}
for(i = 0; i < row; ++i){
for(j = 0; j < col; ++j){
printf("%d\t", b[i][j]);
}
puts("");
}
}
}
return 0;
}

我的程式码若是输入
2 3
1 2 3 4 5 6
则输出
1 2 3
1 2 3

请问要怎么更改我的程式码将第二行的结果变为正确的呢?

2个回答

scanf("%d" , &a[i * col + j]);
b[i][j] = a[i * col + j];
之上改输入,之下改输出
printf("%d\t", b[i][i * col + j]);

xianfajushi
智者知已应修善业 给你的提示也看不懂,输入改了,输出也同样改即可.
大约 2 个月之前 回复
weixin_46081766
weixin_46081766 還是一樣呢 怎麼辦呀
大约 2 个月之前 回复

你给数组值是aj 给二维数组赋值是a[i * col + j];很明显 你赋值的逻辑出现了错误 一维数组和二位数组的值没有统一。你括号上对错我不清楚

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问