编码是不可能会编的
2020-03-15 11:37
采纳率: 100%
浏览 2.9k

一个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条回答 默认 最新

  • Varible 2020-03-15 13:16
    已采纳

    排序算法,初学数组的人要基本会冒泡排序和选择排序,学习算法要了解更多。
    对每行排序。
    假设数组名为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的。

    点赞 打赏 评论
  • NpzyBis 2020-03-15 13:27

    #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

    点赞 打赏 评论
  • 这是靓仔呀 2020-03-16 19:43

    #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");
    }
    }

    点赞 打赏 评论

相关推荐 更多相似问题