回复 楼主 jiqiunianri
按照2楼的修改,你的程序就没有问题了。我按照题目的意思,也写了一个,只是输入是随意的25个数,输出是个二维数组。纯属凑个热闹(既是凑热闹,本意是将处理部分写成函数的,也就不写了):
程序代码:#include
int main()
{
int sort(int *p,int n);
int a[5][5];
int b[25];
int i, j, k = 25;
int temp1, temp2, temp3, temp4;
printf("请输入:\n");
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
scanf_s("%d", &a[i][j]);
b[k] = a[i][j];
k++;
}
}
sort(b,k);
temp1 = b[1];
temp2 = b[2];
temp3 = b[3];
temp4 = b[24];
for (j = 1; j < 4; j++) // 处理第 0 行
{
b[j] = b[j + 3];
}
b[4] = temp1;
for (j = 5; j < 12; j++) // 处理第 1 行及第 2 行前半
{
b[j] = b[j + 2];
}
b[12] = temp4;
for (j = 13; j < 20; j++) // 处理第 2 行后半第 3 行
{
b[j] = b[j + 2];
}
b[20] = temp2;
for (j = 21; j < 24; j++) // 处理第 4 行
{
b[j] = b[j + 1];
}
b[24] = temp3;
k = 0;
for (i = 0; i < 5; i++) // 一维数组转二维数组
{
for (int j = 0; j < 5; j++)
{
a[i][j] = b[k];
k++;
}
}
for (i = 0; i < 5; i++) // 输出数组
{
for (int j = 0; j < 5; j++)
{
printf("%2d ", a[i][j]);
}
printf("\n");
}
return 0;
}
int sort(int *p,int n) // 对一维数 b 组排序
{
int i, j, temp;
for (i = 0;i < n;i++)
{
for (j = 0;j < n - 1;j++)
{
if (*(p + j) > *(p + j + 1))
{
temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
return 0;
}
[此贴子已经被作者于2020-12-28 11:30编辑过]