14-1 改错题
作业已超过截止时间,您无法递交本题目。
对n行n列(n<10)二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序。
【含有错误的源程序】
#include <stdio.h>
#define N=4
void swap(int *p1, int *p2)
{
int p;
p=p1; p1=p2; p2=p;
}
void sort(int a[N][N])
{
int i,j,k;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
for(k=j+1; k<N; k++)
if(i%2=0)
{
if(a[i][j]>a[i][k])
swap(a[i]+j,a[i]+k);
}
else
{
if(a[i][j]<a[i][k])
swap(a[i]+j,a[i]+k);
}
}
int main()
{
int a[N][N];
for(i=0; i<N; i++)
for(j=0; j<N; j++)
scanf("%d", &a[i][j]);
sort(a[N][N]);
int i,j;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%5d", a[i][j]);
printf("\n");
}
return 0;
}
测试案例:
输入:
4
3 4 2 1
8 7 5 6
12 10 11 9
15 14 16 13
输出:
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13