求解。一题C语言题目

//本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
#include <stdio.h>
#include <string.h>
int main()
{
int k,t,x;
char a[80];
gets(a);
k=strlen(a);
for(int i=0;i<k;i++){
for(int j=0;j<k-i;j++)
if(a[i]>a[i+1]){
t=a[i];a[i]=a[i+1];a[i+1]=t; //先进行一次冒泡法排序,整理出顺序
}
}
for(int i=0;i<k;i++){
if(a[i]=a[i+1]){
x=i;
for(i=x;i<k-1;i++) //删去重复的字符
a[i]=a[i+1];
k--;
}
}
puts(a); //输出
return 0;
}

编译通过了。但是这题错了。求大神帮忙。万分感谢

错误错在没考虑 多余重复的情况 

例如 :aaaaaaaaaaaaaa

结果 应该是 a

而你的结果是错误的

我重新给你写吧 ,你的代码改起来不爽,每个人有每个人的习惯

#include<stdio.h>
#include<string.h>

char s[1005],b[1005];

int main()
{
int i,j,len;
char t;
gets(s);
len = strlen(s);
for(i  =0;i<len;i++)
for(j = i+1;j<len;j++)
if(s[i]>s[j]) t = s[i],s[i] = s[j],s[j] = t;
b[0] = s[0],j = 0;
for(i = 1;i<len;i++) {
if(b[j] == s[i]) continue;
else j++,b[j] = s[i];
}
j++;
b[j] = '\0';
strcpy(s,b);
puts(s);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答