c语言 二维数组每行的从小到大排列

#include <stdio.h>
void main()
{
int a[3[4],i,j,t,m;
printf("输入一3×4二维整型数组:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",*(a+i)+j);
for(i=0;i<3;i++)
{
for(t=0;t<4;t++)
if(*(*(a+i)+t+1)<*(*(a+i)+t))
{
m=*(*(a+i)+t+1);
*(*(a+i)+t+1)=*(*(a+i)+t);
*(*(a+i)+t)=m;
}
}
printf("每行按从小到大的排序后为:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%6d",*(*(a+i)+j));
printf("\n");
}
}

这代码错在哪?
为什么会输出乱码啊? 帮个忙。。。。

做出来了,也知道了问题出来哪了,看你会用指针应该是C高手,我把你的做了树熊改动,你应该看得懂。。。 对了,你说的乱码可能是因为你用的C的版本不同,TC不能显示汉字而VC可以,如果你用的是TC的话,你的输出语句里面最好写英语,就不会出现乱码了
#include <stdio.h>
void main()
{
int a[3][4],i,j,t,m,x;
printf("输入一3×4二维整型数组:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",*(a+i)+j);
for(x=1;x<5;x++)
for(i=0;i<3;i++)
{
for(t=0;t<3;t++)
if(*(*(a+i)+t+1)<*(*(a+i)+t))
{
m=*(*(a+i)+t+1);
*(*(a+i)+t+1)=*(*(a+i)+t);
*(*(a+i)+t)=m;
}
}
printf("每行按从小到大的排序后为:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%6d",*(*(a+i)+j));
printf("\n");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-07
我运行了,其他没有问题,也没有什么乱码。就是 从小到大排列 的算法错了,不能达到目的,因为排序你还差一次循环。
是不是你输入有错?
相似回答