|
for内层循环第二次 while循环会死循环 这是已经修改完毕的完整版
#include <stdio.h>
int main()
{
char a[]="abcd",b[]="aabc",c[]="bbde",d[]="bacc",e[]="baaa";
char *pa[]={a,b,c,d,e},t;
int m,j,k,on,w=0,*t1;
for (m=0;m<5;m++) //i为数组编号
{
for(j=0;j<3;j++)//数组下标
{
for(k=j+1;k<4;k++)//数组下标
{
if (*(pa[m]+j)>*(pa[m]+k))
{
t=*(pa[m]+j);
*(pa[m]+j)=*(pa[m]+k);
*(pa[m]+k)=t;
}
}
}
}
for (j=0;j<4;j++)
{
for (k=j+1;k<5;k++)
{
on=0;
while(*pa[j]==*pa[k])
{
on=1;
pa[j]++;
pa[k]++;
w++;
if (*pa[j]!=*pa[k])
{
break;
}
}
if (*pa[j]>*pa[k])
{
t1=pa[j];
pa[j]=pa[k];
pa[k]=t1;
/* printf("%c\n",*pa[j]);
printf("%c\n",*pa[k]);
printf("%d\n",pa[j]);
printf("%d\n",pa[k]);*/
}
while (on)
{
*pa[j]--;
*pa[k]--;
w--;
if (w==0)
{
break;
}
}
}
}
for (m=0;m<5;m++)
{
puts(pa[m]);
}
system("pause");
return 0;
}
|
|