我想把一个4行4列的数组,交换第1行与第3行位置,交换第2列与第4列的位置,怎么编写代码?

下面是我编写的代码,我不能交换第2列与第4列的位置,哪里错了?
Option Base 1

Private Sub Form_Click()
Dim a(4, 4) As Integer
For i = 1 To 4
For j = 1 To 4
a(i, j) = Val(InputBox("请输入数据"))
Next j
Next i
For i = 1 To 4
For j = 1 To 4
Print a(i, j);
Next j
Print
Next i

For i = 1 To 4

For j = 1 To 4
m = a(1, j)
a(1, j) = a(3, j)
a(3, j) = m

Print a(i, j);
Next j
Print
Next i

For i = 1 To 4
For j = 1 To 4
n = a(i, 2)
a(i, 2) = a(i, 4)
a(i, 4) = n
Print a(i, j);
Next j
Print
Next i
End Sub
同时同样的二维数组我还想知道分别输出各行各列的和的代码。求解大神帮忙啊啊啊啊。

第1个回答  2013-10-11
就是你在交换第一行和第三行的值时只需要一个循环语句就行了,我不会你写的这种编程语言,我照你这个来的话只需要向像下面这样就行了
For j = 1 To 4
m = a(1, j)
a(1, j) = a(3, j)
a(3, j) = m

Next j
第二列和第四列的值交换和这是差不多
For i = 1 To 4
n = a(i, 2)
a(i, 2) = a(i, 4)
a(i, 4) = n
Next i

接着就是各行各列的和:
hang_sum[4]={0,0,0,0};
lie_sum[4]={0,0,0,0};

for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
hang_sum[i]+=a[i][j]; //这是每行值的和
}

for(int j=0;j<4;j++)
for(int i=0;i<4;i++)
{
lie_sum[j]+=a[i][j]; //这是每列值的和
}

虽然我们可能用的编程语言不一样,但是它的思想应该是差不多的,这个也不复杂,应该也是看的懂滴。。追问

你的那个求和的编程我不太懂,我没有碰到过能解释下嘛?而且我按照你的代码写,运行时说下标越界怎么回事?

追答

先看求每行值的和:在i=0时,我求的就是第一行所有数的和,hang_sum[0]初始值为0,让后我通过一个循环
for(int j=0;j
using namespace std;
int main()
{
int a[4][4];
cout>a[i][j];
}

int hang_sum[4]={0,0,0,0};
int lie_sum[4]={0,0,0,0};

for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
hang_sum[i]+=a[i][j]; //这是每行值的和
}
for(int j=0;j<4;j++)
for(int i=0;i<4;i++)
{
lie_sum[j]+=a[i][j]; //这是每列值的和
}

for (int i=0;i<4;i++){

for(int j=0;j<4;j++)
{
cout<<a[i][j]<<" ";
}
cout<<hang_sum[i]<<endl;
}
for(int i=0;i<4;i++)
cout<<lie_sum[i]<<" ";

return 0;
}

本回答被提问者采纳
相似回答