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/07/02 14:01:14
![C语言问题:将一字符串按ASCII大小排序main(){char a[260] ;int i,j,k;printf(](/uploads/image/z/5361182-62-2.jpg?t=C%E8%AF%AD%E8%A8%80%E9%97%AE%E9%A2%98%EF%BC%9A%E5%B0%86%E4%B8%80%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8C%89ASCII%E5%A4%A7%E5%B0%8F%E6%8E%92%E5%BA%8Fmain%28%29%7Bchar+a%5B260%5D+%3Bint+i%2Cj%2Ck%3Bprintf%28%22please+enter%3A%22%29%3Bgets%28a%29%3Bfor%28i%3D0%3Ba%5B0%5D%21%3D%27%5C0%27%3B+%29%7Bfor%28j%3D0%3Ba%5Bj%5D%21%3D%27%5C0%27%3Bj%2B%2B%29%7Bif%28a%5Bi%5D%3Ea%5Bj%5D%29+i%3Dj%3B%7Dprintf%28%22%25c%22%2Ca%5Bi%5D%29%3Bfor%28k%3Di%3Ba%5Bk%5D%21%3D%27%5C0%27%3Bk%2B%2B%29+a%5Bk%5D%3Da%5Bk%2B1%5D%3B%7Dgetch%28%29%3B%7D%E4%B8%BA%E4%BB%80)
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 )就好了.
(好吧,我很啰嗦,希望讲清楚了~)