给你一个n阶方阵,请你把每行数据按数据从小到大排序并输出。
输入格式:
输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据。 每组测试数据的第一行输入1个整数n(1<n<20),接下来输入n行数据,每行n个整数。
输出格式:
对于每组测试,输出排好序后的结果。每行中各数据之间留一个空格。
输入样例:
2
3
4 9 2
3 5 7
8 1 6
2
3 5
1 2
输出样例:
2 4 9
3 5 7
1 6 8
3 5
1 2
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
const int N = 20;
int t, n;
int a[N][N];
cin >> t;
for (int k = 0; k < t; k++)
{
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
for (int i = 0; i < n; i++)
sort(&a[i][0], &a[i][0] + n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << a[i][j] << ' ';
cout << '\n';
}
}
return 0;
}
先存
再排序
再输出
#include <stdio.h>
int main()
{
int t, n, i, j, k, q, m,*pa, *pb;
scanf("%d",&t);
for(i = 1; i <= t; i++)
{
scanf("%d",&n);
int a[n][n];
for(k = 0; k < n; k++)
for(j = 0; j < n; j++)
scanf("%d",&a[k][j]);
for(q = 0; q < n; q++)
{
for(j = 0; j < n-1; j++)
{
for(k = j+1; k < n; k++)
{
if(a[q][j] >a[q][k])
{
m = a[q][j];
a[q][j] = a[q][k];
a[q][k] = m;
}
}
}
}
for(k = 0; k < n; k++)
{
for(j = 0; j < n; j++)
{
if(j == 0)
{
printf("%d",a[k][j]);
}
else
{
printf(" %d",a[k][j]);
}
}
printf("\n");
}
}
}
#include
using namespace std;
int main()
{
int n,i,j,k,m,x,p;
int a[m][m];
cin>>n;
for(i=1;i<=n;i++)
{cin>>m;
for(j=0;j<m;j++)
for(k=0;k<m;k++)
cin>>a[j][k];
for(j=0;j<m;j++)
for(k=0;k<m;k++)
{
cout<<a[j][k];
if(k<m)
cout<<" ";
if(k==m-1)
cout<<endl;
}}
}
这是我的想法,中间用冒泡但是总是写不对,所以不知道应该怎么排序,或许有更好的写法