注:文章内容来源于网络,真实性有待确认,请自行甄别。
C语言二维数组的排序问题(为什么以下代码不能实现升序排列???)
发表于:2024-10-24 00:00:00浏览:3次
问题描述:
#include <std.h>
void main()
{
int row,column,i,j,min,temp,c[2][2];
scanf("%d%d%d%d",&c[0][0],&c[0][1],&c[1][0],&c[1][1]);
for( row = 0; row < 2; row++ )
{
for( column = 0; column < 2; column++)
{
#include <std.h>
void main()
{
int row,column,i,j,min,temp,c[2][2];
scanf("%d%d%d%d",&c[0][0],&c[0][1],&c[1][0],&c[1][1]);
for( row = 0; row < 2; row++ )
{
for( column = 0; column < 2; column++)
{
min = c[row][column];
for( i = row; i < 2; i++ )
{
for( j = 0; j < 2; j++ )
if( min > c[i][j] )
{
temp = c[i][j];
c[i][j] = min;
min = temp;
}
}
c[row][column] = min;
}
}
printf("%d %d %d %d",c[0][0],c[0][1],c[1][0],c[1][1]);
system("pause");
}
如输入1 2 3 4输出却为2 1 4 3
这个有点混乱哦,你单步调一下就知道了。事实上二维数组可以按照一维数组的方法进行排序,下面是我的代码:
#include
#define ROW 2
#define COL 2
#define NUM ((ROW)*(COL))
int main()
{
int i,j;
int temp;
int c[ROW][COL];
int *pmin;
pmin = &c[0][0];
scanf("%d%d%d%d",&c[0][0],&c[0][1],&c[1][0],&c[1][1]);
for(i = 0; i < NUM; i++)
{
for(j = 0; j < (NUM - i); j++)
{
if((*pmin) > *(pmin + j))
{
temp = *(pmin + j);
*(pmin + j) = *pmin;
*pmin = temp;
}
}
pmin++;
}
printf("%d %d %d %d\n",c[0][0],c[0][1],c[1][0],c[1][1]);
return 1;
}
给你做个参考,呵呵!
栏目分类全部>