谭浩强C++课后习题29——矩阵中交换元素

谭浩强C++课后习题29——矩阵中交换元素

题目描述:将一个5*5的矩阵中的最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上到下顺序依次从小到大存放),编写一个函数来实现。用main函数调用。

#include<iostream>
using namespace std;
const int n = 5;
void Move(int matrix[][n]) {
	int temp;
	int maxi = 0, maxj = 0, mini = 0, minj = 0;
	for (int i = 0;i < n;i++) 
		for (int j = 0;j < n;j++) 
			if (matrix[i][j] > matrix[maxi][maxj]) {
				maxi = i;
				maxj = j;
			}
	temp = matrix[n / 2][n / 2];
	matrix[n / 2][n / 2] = matrix[maxi][maxj];
	matrix[maxi][maxj] = temp;

	for (int i = 0;i < n;i++)
		for (int j = 0;j < n;j++)
			if (matrix[i][j] < matrix[mini][minj]) {
				mini = i;
				minj = j;
			}
	temp = matrix[0][0];
	matrix[0][0] = matrix[mini][minj];
	matrix[mini][minj] = temp;

	mini = 0;minj = 1;
	for (int i = 0;i < n;i++)
		for (int j = 0;j < n;j++)
			if ((matrix[i][j] < matrix[mini][minj])&&!(i==0&&j==0)) {
				mini = i;
				minj = j;
			}
	temp = matrix[0][n-1];
	matrix[0][n-1] = matrix[mini][minj];
	matrix[mini][minj] = temp;

	mini = 0;minj = 1;
	for (int i = 0;i < n;i++)
		for (int j = 0;j < n;j++)
			if ((matrix[i][j] < matrix[mini][minj]) && !(i == 0 && j == 0)&&!(i==0&&j==n-1)) {
				mini = i;
				minj = j;
			}
	temp = matrix[n-1][0];
	matrix[n-1][0] = matrix[mini][minj];
	matrix[mini][minj] = temp;

	mini = 0;minj = 1;
	for (int i = 0;i < n;i++)
		for (int j = 0;j < n;j++)
			if ((matrix[i][j] < matrix[mini][minj]) && !(i == 0 && j == 0) && !(i == 0 && j == n - 1)&&!(i==n-1&&j==0)) {
				mini = i;
				minj = j;
			}
	temp = matrix[n - 1][n-1];
	matrix[n - 1][n-1] = matrix[mini][minj];
	matrix[mini][minj] = temp;
}
int main() {
	int matrix[n][n];
	cout << "输入矩阵:" << endl;
	for (int i = 0;i < n;i++)
		for (int j = 0;j < n;j++)
			cin >> matrix[i][j];
	Move(matrix);
	cout << "新矩阵:" << endl;
	for (int i = 0;i < n;i++) {
		for (int j = 0;j < n;j++)
			cout << matrix[i][j] << '\t';
		cout << endl;
	}
	return 0;
}

运行测试结果:
在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 574

猜你喜欢

转载自blog.csdn.net/weixin_45295612/article/details/105291802