如果要输出一个5X5的矩阵,四角依次存放四个最小的数,中间位置存放最大的数,然后其他位置的元素按顺序排序,该使用怎样的思路呢,该如何编写代码呢
1条回答 默认 最新
- CSDN专家-天际的海浪 2021-08-06 13: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无用