0
已解决
谈文瑞
新手光能
新手光能
1129 交换矩阵的行
题目描述 Description
任意给定一个m行n列的矩阵,将第a行和第b行交换,并输出交换后的结果。 (数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列)
输入描述 Input Description
输入为m+1行:
第一行为4个整数,分别为矩阵的行数m、列数n和需要交换的两行a、b,每个整数以一个空格隔开(1≤a≤m≤100;2≤b≤n≤100);
之后的m行为该矩阵的所有m行n列元素,每一行的元素之间用一个空格隔开。
输出描述 Output Description
输出为m行,为交换后的矩阵,每一行的元素之间用一个空格隔开。
样例输入 Sample Input
5 4 1 3
1 2 3 4
4 3 2 1
6 7 8 9
9 8 7 6
4 5 6 7
样例输出 Sample Output
6 7 8 9
4 3 2 1
1 2 3 4
9 8 7 6
4 5 6 7
#include<bits/stdc++.h> using namespace std; int main() { int m,n,a,b,i,j; cin>>m>>n>>a>>b; int s[m][n]; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>s[i][j]; } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(i==a) { i=b; }else if(i==b) { i=a; } cout<<s[i][j]<<" "; } cout<<endl; } return 0; }
哪错了
0
已采纳
郑怡翔
初级天翼
初级天翼
用swap函数
前面是定义,输入二维数组
核心:
for(j=0;j<n;j++)
{
swap(x[a-1][j],x[b-1][j]);
}
然后输出二维数组
1
贾敬波
高级守护
高级守护
你到这个题目就是不会交换嘛,以下为交换的核心代码。
if(a==i)
{
t=s[a][j];
s[a][j]=s[b][j];
s[b][j]=t;
}
你原来的那个直接改变了循环的计数器i,答案是肯定不对的。
0
0
方宇哲
资深守护
资深守护
转换核心代码: for(int j=0;j<n;j++ ) { swap(c[a-1] [j],c[b-1] [j]); }
swap开头代码《cmath》
顺序是
定义数组 输入 转换核心代码 输出 返回值
0
刘斐
高级守护
高级守护
核心代码(交换代码):
for(int i=0;i<n;i++)
{
t=s[a-1][i];
s[a-1][i]=s[b-1][i];
s[b-1][i]=t;
}
剩下的就是输入输出了。
0
马佳滢
新手天翼
新手天翼
1、定义 m,n,二维数组a[100行][100列],b,c,jrsz[100];
2、循环输入a二维数组;
3、核心(见下):
循环(定义c12,从1循环到n){
jrsz[c12]=a[c-1][c12];
a[c-1][c12]=a[b-1][c12];
a[b-1][c12]=jrsz[c12];
}
//核心
4、循环输出a二维数组。
0