C程序 谁看看我哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/16 01:00:38
题目要求从键盘输入字符串,放在数组a中,然后将a中的有效字符按降序排列!
#include<stdio.h>
#include<string.h>
main()
{
char a[80],b[5];int i,j;
gets(a);
for(i=0;i<80;i++)
for(j=i+1;j<79-i;j++)

{
if(a[i]<a[j])
b[0]=a[i];a[i]=a[j];a[j]=b[0];
}
//for(i=0;i<80;i++)
// printf("%c",a[i]);
puts(a);
}
最后结果有乱码!!

#include<stdio.h>
#include<string.h>
main()
{
char a[80],b[5];int i,j;
gets(a);
for(i=0;i<strlen(a)-1;i++)/*注意这里*/
for(j=i+1;j<strlen(a);j++)/*注意这里*/

{
if(a[i]<a[j]){/*注意这里*/
b[0]=a[i];
a[i]=a[j];
a[j]=b[0];
}/*注意这里*/
}
//for(i=0;i<80;i++)
// printf("%c",a[i]);
puts(a);
}

一个字符串一定要以\0结尾的,你这个char a[80]最后没有\0,所有显示乱码.

在char a[80]后面加a[79] = '\0';

后面排序的时候从0到78进行排序,就是:

for(i=0;i<79;i++)
for(j=i+1;j<78-i;j++)