一个4×5的整型二维数组,从键盘输入数据,并对该数组的每一行按从小到大的顺序排列后输出。

输入格式:
输入4行5列的矩阵,每行第一个数前没有空格,每行的每个数之间各有一个空格。

输出格式:
输出4行5列的矩阵,每行第一个数前没有空格,每个数输出占4列列宽。

输入样例:
1 5 4 2 6
3 2 5 8 4
8 5 4 1 5
9 5 1 2 6

输出样例:
1 2 4 5 6
2 3 4 5 8
1 4 5 5 8
1 2 5 6 9

3个回答

排序算法,初学数组的人要基本会冒泡排序和选择排序,学习算法要了解更多。
对每行排序。
假设数组名为a,类型为long double,下标从1开始。
我只打中间排序的部分,我用冒泡。

for (int k = 1;k <= 4;k ++)
 for (int i = 1;i <= 5 - 1;i ++)
  for (int j = 1;j <= 5 - i;j ++)
   if (a[k][j] > a[k][j + 1]) {
    long double t = a[k][j];
    a[k][j] = a[k][j + 1];
    a[k][j + 1] = t;
   }

望采纳

超时你把输入二维数组改为最外循环内先输入一维数组再排序,或找找快排和归并排。

下面那位头文件是C++应用程序的,编译错没办法,测试系统的ide基本不是application的。

weixin_46122491
weixin_46122491 _(:з」∠)_我做出了个别的答案对了,但是同样谢谢你,采纳啦
5 个月之前 回复
Varible
Varible 回复weixin_46122491: #include <iostream> #include <algorithm> using namespace std; int main(int argc,char **argv) { int a[10] = {0}; for (int k = 1;k <= 4;k ++) { for (int i = 1;i <= 5;i ++) cin >> a[i]; for (int i = 1;i <= 5 - 1;i ++) for (int j = 1;j <= 5 - i;j ++) if (a[j] > a[j + 1]) swap(a[j],a[j + 1]); for (int i = 1;i <= 5 - 1;i ++) cout << a[i] << ' ';//这样输出没事,因为系统测试是文件流。 cout << a[5] << endl; } return 0; }
5 个月之前 回复
weixin_46122491
weixin_46122491 _(:з」∠)_不知道为啥这样的会运行超时
5 个月之前 回复

#include "stdafx.h"
#include

int main()
{
int numArray[4][5];
int i, j, k;
//数据输入
printf("请输入4行5列数字,空格分隔。\r\n");
for (i = 0; i < 4; i++) {
printf("请输第%d行整数,空格分隔。\r\n",i+1);
scanf_s("%d %d %d %d %d",
&(numArray[i][0]),
&(numArray[i][1]),
&(numArray[i][2]),
&(numArray[i][3]),
&(numArray[i][4]));
}
//数据排序处理,对每一行进行冒泡排序
for (i = 0; i < 4;i++) {
for (int j = 0; j < 4;j++) {
for (int k = 0; k < 4;k++) {
if (numArray[i][k]>numArray[i][k+1]) {
int tmp = numArray[i][k+1];
numArray[i][k + 1] = numArray[i][k];
numArray[i][k] = tmp;
}
}
}
}
//输出数据
printf("排序结果为:\r\n");
for(i = 0; i < 4;i++ ){
printf("%d\t%d\t%d\t%d\t%d\r\n",
numArray[i][0],
numArray[i][1],
numArray[i][2],
numArray[i][3],
numArray[i][4]);
}
printf("按任意键退出");
getchar();
getchar();
getchar();

return 0;

}

Vs2015平台开发,scanf_s可替换scanf

weixin_46122491
weixin_46122491 _(:з」∠)_显示编译错误,大佬
5 个月之前 回复

#include
main()
{
int arr[4][5];
int temp;
//输入二维数组元素
for(int i=0;i {
for(int j=0;j {
scanf("%d",&arr[i][j]);
}
}
//每行排序
for(int i=0;i {
for(int j=0;j {
for(int k=0;k {
if(arr[i][k]>arr[i][k+1])
{
temp=arr[i][k];
arr[i][k]=arr[i][k+1];
arr[i][k+1]=temp;
}
}
}
}
//输出二维数组
for(int i=0;i<4;i++)
{
for(int j=0;j<5;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
}

Varible
Varible 一维数组就可以了
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐