C语言问题:将一字符串按ASCII大小排序main(){char a[260] ;int i,j,k;printf("please enter:");gets(a);for(i=0;a[0]!='\0'; ){for(j=0;a[j]!='\0';j++){if(a[i]>a[j]) i=j;}printf("%c",a[i]);for(k=i;a[k]!='\0';k++) a[k]=a[k+1];}getch();}为什

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 19:56:44

C语言问题:将一字符串按ASCII大小排序main(){char a[260] ;int i,j,k;printf("please enter:");gets(a);for(i=0;a[0]!='\0'; ){for(j=0;a[j]!='\0';j++){if(a[i]>a[j]) i=j;}printf("%c",a[i]);for(k=i;a[k]!='\0';k++) a[k]=a[k+1];}getch();}为什
C语言问题:将一字符串按ASCII大小排序
main()
{
char a[260] ;
int i,j,k;
printf("please enter:");
gets(a);
for(i=0;a[0]!='\0'; )
{
for(j=0
;a[j]!='\0';j++)
{
if(a[i]>a[j]) i=j;
}
printf("%c",a[i]);
for(k=i;a[k]!='\0';k++) a[k]=a[k+1];
}
getch();
}
为什么当我输入的字符串的最后一个是最大的时候程序运行正常 但是最后一个不是字符串中的最大的就会出现死循环?
如hasdhsdkfhdz对的 但是sjaoidjiaosdjsdozkokp不对
就是输入一个字符串 再将字符串按ascii值大小排序

C语言问题:将一字符串按ASCII大小排序main(){char a[260] ;int i,j,k;printf("please enter:");gets(a);for(i=0;a[0]!='\0'; ){for(j=0;a[j]!='\0';j++){if(a[i]>a[j]) i=j;}printf("%c",a[i]);for(k=i;a[k]!='\0';k++) a[k]=a[k+1];}getch();}为什
出现死循环时,屏幕上输出的其实是'\0'(和空格一个效果),因为最后一个不是字符串中的最大的时候,随着程序执行,字符串中字符不断减少,最后一个字符终将变为字符串中最小的字符,此后执行if(a[i]>a[j]) i=j;后a[i]='\0',随后再次循环到if(a[i]>a[j]) 时,因为a[i]='\0',所以就总会小于a[j],于是保持a[i]='\0',输出屏幕上就是空,而a[k]=='\0',字符串不会再变化,并陷入死循环.
把for(i=0;a[0]!='\0'; )改为for(i=0;a[0]!='\0';i=0 )就好了.
(好吧,我很啰嗦,希望讲清楚了~)