灰原赛高 2021-08-06 13:15 采纳率: 100%
浏览 84
已结题

C++基础编程习题关于矩阵 然后排序

如果要输出一个5X5的矩阵,四角依次存放四个最小的数,中间位置存放最大的数,然后其他位置的元素按顺序排序,该使用怎样的思路呢,该如何编写代码呢

  • 写回答

1条回答 默认 最新

  • 关注

    可以先排序,再把前4个元素和最后一个元素移动到指定位置

    1. #include <stdio.h>
    2. #define N 5
    3. void swap(int *a,int *b)
    4. {
    5. int t=*a;
    6. *a=*b;
    7. *b=t;
    8. }
    9. void sort(int *a,int n)
    10. {
    11. int i,j;
    12. for(i=0;i<N*N;i++)
    13. for(j=i+1;j<N*N;j++)
    14. if(a[i]>a[j])
    15. {
    16. swap(&a[i],&a[j]);
    17. }
    18. }
    19. void mone(int *a,int s,int e)
    20. {
    21. int i;
    22. if (s<e)
    23. for(i=s;i<e;i++)
    24. swap(&a[i],&a[i+1]);
    25. else
    26. for(i=s;i>e;i--)
    27. swap(&a[i],&a[i-1]);
    28. }
    29. #include <string.h>
    30. int main()
    31. {
    32. int a[N][N];
    33. printf("Please enter a 5x5 matrix: \n");
    34. for (int i = 0; i < N; i++) {
    35. for (int j = 0; j < N; j++) {
    36. scanf("%d", &a[i][j]);
    37. }
    38. }
    39. sort(a, N);
    40. mone(a,24,14);
    41. mone(a,3,24);
    42. mone(a,2,20);
    43. mone(a,1,4);
    44. printf("\n");
    45. for (int i = 0; i < N; i++) {
    46. for (int j = 0; j < N; j++) {
    47. printf("%d ", a[i][j]);
    48. }
    49. printf("\n");
    50. }
    51. system("pause");
    52. return 0;
    53. }

    img

    如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月16日
  • 已采纳回答 8月9日
  • 创建了问题 8月6日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部