求助:二维数组用冒泡法排序输出的问题
#include <stdio.h>#include "stdlib.h"
#include "time.h"
int main(int argc,char *argv[])
{
int a,i,j,k,t,*p;
printf("排序前:\n");
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf("%3d",a=rand()%100);
printf("\n");
}
printf("排序后:\n");
p=(int *)a;//降为一维
k=100-1;
for(j=1;j<=100-1;j++,k--)
for(i=0;i<=k-1;i++)
if(p>p)
{
t=p;
p=p;
p=t;
}
for(i=0;i<100;i++)
{ printf (++t%10 ? "%3d" : "%3d\n",p);}
return 0;
}
输出后第一行总是不全。。
运行结果如图
23行之前,将t重新初始化为0 BngThea 发表于 2018-6-19 17:21
23行之前,将t重新初始化为0
解决了感谢! BngThea 发表于 2018-6-19 17:21
23行之前,将t重新初始化为0
不过可以解释一下吗... 千杯不醉的关关 发表于 2018-6-19 17:24
不过可以解释一下吗...
输出的时候,换行的条件是 ++t%10,明显当t为10的倍数时换行,那么计数应当从0开始
而前面你用t作为中间变量交换大小数据,所以执行到打印的时候,t存的值未定 BngThea 发表于 2018-6-19 17:26
输出的时候,换行的条件是 ++t%10,明显当t为10的倍数时换行,那么计数应当从0开始
而前面你用t作为中 ...
好的 明白了 谢谢!
页:
[1]