#include<stdio.h>
//#include<conio.h>
void main()
{
long tmpdec,decnum[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
char string[31]="11234abc4560ef3d2fa33cd234ed8c";
int i,k,j=0;
// clrscr();
for(i=0;i<31;i++)
{
if(string[i]<='0' && string[i]<='9')
{
decnum[j]=decnum[j]*10+(string[i]-0x30);
++j;
}
else
{
if(decnum[j]!=0)
++j;
}
continue;
}
for(i=0;i<j;i++)
{
for(k=0;k<j-1;k++)
{
if(decnum[k]>decnum[k+1])
{
tmpdec=decnum[k];
decnum[k]=decnum[k+1];
decnum[k+1]=tmpdec;
}
}
}
for(i=0;i<j;i++)
printf("%1d\n",decnum[i]);
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
//#include<conio.h>
void main()
{
long tmpdec,decnum[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
char string[31]="11234abc4560ef3d2fa33cd234ed8c";
int i,k,j=0;
// clrscr();
for(i=0;i<31;i++)
{
if(string[i]<='0' && string[i]<='9')
{
decnum[j]=decnum[j]*10+(string[i]-0x30);
++j;
}
else
{
if(decnum[j]!=0)
++j;
}
continue; 这干啥! 好象多余了哦! (LZ四川人?)
}
for(i=0;i<j;i++)
{
for(k=0;k<j-1;k++)
{
if(decnum[k]>decnum[k+1])
{
tmpdec=decnum[k];
decnum[k]=decnum[k+1];
decnum[k+1]=tmpdec;
}
}
}
for(i=0;i<j;i++)
printf("%1d\n",decnum[i]);
}
----------------解决方案--------------------------------------------------------
j++只执行了一次。
string[i]<='0' && string[i]<='9'
这个语句似乎有些问题
既然都小于'0'也就当然小于'9'
因为string[31]中的所有元素中只有string[11]<=0,故j++,j=1
而decnum[1]=0所以不执行其后面的j++
对于如下语句
for(i=0;i<j;i++)
{
for(k=0;k<j-1;k++){
if(decnum[k]>decnum[k+1])
{
tmpdec=decnum[k];
decnum[k]=decnum[k+1];
decnum[k+1]=tmpdec;}
}
}因为j=1,最外层循环执行一次,而里面的一次都不执行
----------------解决方案--------------------------------------------------------
谢谢各位了。
问题我以解决
----------------解决方案--------------------------------------------------------
有个问题.j=1的话
for(i=0;i<j;i++)
printf("%1d\n",decnum[i]);
应该只显示decnum[0]的值啊.为什么还显示decnum[1]呢?
----------------解决方案--------------------------------------------------------