【发布时间】:2019-03-24 01:07:33
【问题描述】:
你好,我的程序有问题,我想用下一个结构交换矩阵中的行:
第一行和最后一行。
第二行和倒数第二行。
直到 N 到 N 个值。
注意:我使用了#define n 4,但我需要能够为任何 n 值做到这一点。
输入:
3 4 5 0
2 6 1 2
2 7 1 2
2 1 1 2
输出:
2 1 1 2
2 7 1 2
2 6 1 2
3 4 5 0
这个程序只改变第一行和最后一行:
#include <iostream>
using namespace std;
#define n 4
void interchange(int m[][n])
{
int rows = n;
for (int i = 0; i < n; i++)
{
int t = m[0][i];
m[0][i] = m[rows - 1][i];
m[rows - 1][i] = t;
}
}
int main()
{
int m[n][n] = {
{ 8, 9, 7, 6 },
{ 4, 7, 6, 5 },
{ 3, 2, 1, 8 },
{ 9, 9, 7, 7 }
};
interchange(m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << m[i][j] << " ";
cout << endl;
}
}
谢谢。
【问题讨论】:
-
您可以简单地打印/使用从
n开始的矩阵行,而不是0,根本不需要任何交换。 -
使交换函数再接受两个参数 - 它应该交换的行。那么这个程序将变得非常类似于反转一维数组