如果要输出一个5X5的矩阵,四角依次存放四个最小的数,中间位置存放最大的数,然后其他位置的元素按顺序排序,该使用怎样的思路呢,该如何编写代码呢
可以先排序,再把前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;
}
如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮