Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
【入门】操场换位置 - NOTEBOOK
【入门】操场换位置
C++
Posted on 2023-08-10
摘要 : 学会定义、使用二维数组,使用for循环遍历数组。

同学们在操场上排成了一个n行m列的队形,请将这个队形中,年龄最大的同学和年龄最小的同学交换位置,并输出交换的结果(本题数据保证年龄最大的同学和年龄最小的同学在矩阵中是唯一的)
比如:如下是一个3行4列的队形,这个队形中每个数字代表了每个同学的年龄。
8 10 18 9
15 12 10 6
17 3 12 15

这个队形中,年龄最大的同学在第1行第3列,年龄最小的同学在第3行第2列,将他们交换位置后输出结果为:
8 10 3 9
15 12 10 6
17 18 12 15


❱ 输入描述:

第1行有2个整数n和m,分别代表队形的行和列的值(2<=n,m<=200)
接下来n行,每行有m个整数,代表每个同学的年龄(每个同学的年龄的值在1~100之间)

❱ 输出描述:

输出n行m列,代表交换位置后的结果,每行的m个数之间用空格隔开。

❱ 用例输入:

3 4
8 10 18 9
15 12 10 6
17 3 12 15

❱ 用例输出:

8 10 3 9
15 12 10 6
17 18 12 15




#include<iostream>
using namespace std;

int main() {
int m,n; // 定义 行,列
cin>>m>>n;
int a[m+2][n+2]={0}; // 二维数组初始化

int mxx=1,mxy=1,mix=1,miy=1;// 设置最大值和最小值的坐标都是 第一格。即以第一格作为比较的初始数据。

for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j]; // 循环录入数据,赋值给二维数组。

if(a[i][j]>a[mxx][mxy]){ // 写入数据的同时,找出最大值、最小值的坐标
mxx=i;mxy=j; // 更新最大值的坐标
}
if(a[i][j]<a[mix][miy]){
mix=i;miy=j; // 更新最小值的坐标
}
}
}
swap(a[mxx][mxy],a[mix][miy]); // 交换位置

// 打印矩阵
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cout << a[i][j] << " "; // 依次打印每一行,用空格隔开。
}
cout<<endl; // 每一行结束,打印换行符号。
}

}