字符串内排序
题目描述
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
对于排序,我直接写了个简单的冒泡排序:
void sort(char a[],int n){
int i,j;
char temp;
for(i=1;i<=n;i++){
for(j=n;j>i-1;j--){
if(a[j]<a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
对于这种不确定个数的字符串输入,通常要有结束输入的标识,一般会以-1什么的结束,但这个题没有给出,这里我们采用换行符’\n’来作为结束标志:
int main(){
int i=0,j;
char a[200];
scanf("%c",&a[i]);//先输入一个a[0],以进入循环
while(a[i]!='\n'){
i++;
scanf("%c",&a[i]);
}
sort(a,i);
for(j=1;j<=i;j++){ //这里由于把空行输入了数组,如果从零开始,就会打印出一个空行,暂时没想到更好的解决办法,因为空行是被排在最前面,所以从1开始打印
printf("%c",a[j]);
}
}
当然也可以采用这样的方式进行输入:
int main(){
int i=0,j;
char a[200];
while((scanf("%c",&a[i]))!=EOF){
i++;
}
sort(a,i);
for(j=2;j<=i;j++){ //这里多输入了两个空行
printf("%c",a[j]);
}}
在运行时,输入完字符后,先按enter键,再按Ctrl+z,再enter,就会得到想要的结果