这个程序编译没错,为什么执行出错?

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:48:00
要求是输入一个字符串,然后排序输入,并且要删去重复的
#include<iostream.h>
void sort(char b[])
{
int i,j,k;
for(i=0;i<=20;i++)
{for(j=1;j<=20;j++)
{if (b[i]>b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;
}
}
}
for(i=0;i<=20;i++)
{if (b[i]==b[i+1])
{for(j=i+1;j<=20;j++)
{b[j]=b[j+1];
}
}
}
}
void main()
{
char a[20];
int i;
cout<<"请输入一串字符:";
for(i=0;i<=20;i++)
{cin>>a[i];
if (a[i]=='\n')
break;
}
sort(a);
for(i=0;i<=20;i++)
{cout<<a[i];
}
}
改正错误后,还是执行不了,主要现象是为什么没有输出,先不论执行结果怎么样,输入一串字符按回车后什么反应都没有

【错误1】对数组的概念不清晰:
从你的输入开始就是错误的!
>> for(i=0;i<=20;i++)
>> {cin>>a[i];
你的数组只开到20,就是你能访问的范围是a[0]~a[19]
更进一步的错误是
>> for(i=0;i<=20;i++)
>> {if (b[i]==b[i+1])
那个i+1更要命……
【错误2】冒泡排序不是那么写的……