序: 将N行N列二维数组中的每一行的元素进行排序,第0行从小到大排序, 第一行从大到小排序,

编写程序:
将N行N列二维数组中的每一行的元素进行排序,第0行从小到大排序,
第一行从大到小排序,第2行从小到大排序,第3行从大到小排序

请写上注释,方便浏览,谢谢

#include<stdio.h>
#define N 100
#define M 100

int i,j,k,n,m;
int a[N][M];

void input() //输入函数
{
for(i=0;i<n;i++)
{
printf("\n第%d行\n",i+1);
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
printf("\n");
}
}

void output()//输出函数
{
printf("输出排序之后的数:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}

void main()
{
int temp;
printf("\n输入行数n:");
scanf("%d",&n);
printf("\n输入列数m:");
scanf("%d",&m);

input();

for(i=0;i<n;i++)
{
for(k=0;k<m;k++)
for(j=0;j<m-1-k;j++)
if(((i%2)==0)&&(a[i][j]>a[i][j+1]) || ((i%2)==1)&&(a[i][j]<a[i][j+1])) //i%2==0,1表示奇数、偶数行
{
temp=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=temp;
}
}

output();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-26
define N 4
void sort(int a[][N])
{ int i, j, k, t;
for (i=0; i<N;i++)
for (j=0; j<N-1:j++)
for (k= 1 ; k<N;K++)
/* 判断行下标是否为偶数来确定按升序或降序来排序 */
if ( (i%2==1) ? a[i][j]<a[i][k]); a[i][j]>a[i][k])
{ t = a[i][j];
a[i][j]=a[i][k];
a[i][k] = t;
}
}
void outarr(int a[N][N])
{ …… }
main()
{ int aa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,13}};
outarr(aa); /* 以矩阵的形式输出二维数组 */
sort(aa);
outarr(aa);
}
第2个回答  2011-05-07
问题补充:要求二维数组的输入排序和输出分别用一个函数实现.组的行数和列数printf(
第3个回答  2011-05-19
汗!
相似回答