如果要输出一个5X5的矩阵,四角依次存放四个最小的数,中间位置存放最大的数,然后其他位置的元素按顺序排序,该使用怎样的思路呢,该如何编写代码呢
1条回答 默认 最新
- CSDN专家-天际的海浪 2021-08-06 21:23关注
可以先排序,再把前4个元素和最后一个元素移动到指定位置
#include <stdio.h> #define N 5 void swap(int *a,int *b) { int t=*a; *a=*b; *b=t; } void sort(int *a,int n) { int i,j; for(i=0;i<N*N;i++) for(j=i+1;j<N*N;j++) if(a[i]>a[j]) { swap(&a[i],&a[j]); } } void mone(int *a,int s,int e) { int i; if (s<e) for(i=s;i<e;i++) swap(&a[i],&a[i+1]); else for(i=s;i>e;i--) swap(&a[i],&a[i-1]); } #include <string.h> int main() { int a[N][N]; printf("Please enter a 5x5 matrix: \n"); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { scanf("%d", &a[i][j]); } } sort(a, N); mone(a,24,14); mone(a,3,24); mone(a,2,20); mone(a,1,4); printf("\n"); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { printf("%d ", a[i][j]); } printf("\n"); } system("pause"); return 0; }
如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用