C程序问题,帮忙看看,谢谢!!

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:34:11
#include <stdio.h>
void main()
{
int i,j,x,y,z,w,b,c;
int a[3][5]={{23,5,71,10,4},{39,23,7,85,-9},{36,12,52,-8,47}};
for(i=0;i<3;i++)
{for(j=0;j<5;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
for(w=0;w<3;w++)
for(x=0;x<5;x++)
for(y=0;y<5-x;y++)

if(a[y][0]>a[y+1][0])
{
z=a[y][0];a[y][0]=a[y+1][0];a[y+1][0]=z;
}

printf("new a:\n");
for(b=0;b<3;b++)
{for(c=0;c<5;c++)
printf("%d\t",a[b][c]);
printf("\n");
}
getch();
}

我想把a的每一行从小到大排列,然后重新输出a,
编译通过了,但不是我想要的结果,是哪错了?

if(a[w][y]>a[w][y+1])
{
z=a[w][y];a[w][y]=a[w][y+1];a[w][y+1]=z;
}
楼主这段程序有问题
if(a[y][0]>a[y+1][0])
{
z=a[y][0];a[y][0]=a[y+1][0];a[y+1][0]=z;
}
y是表示行,楼主的程序只是每行的第一列比较大小。。。显然是达不到所需要求的。要循环比较三行,必须以w为行参量,列数以y为参量。

费神啊
在给点分,我给你看看。。

#include "iostream.h"

void order(int a[])
{
int temp=0,i=0,j=0;
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}

void main()
{
int i=0,j=0;
int a[3][5]={{23,5,71,10,4},{39,23,7,85,-9},{36,12,52,-8,47}};
for(i=0;i<3;i++)
{
order(a[i]);
}
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
}