核心去重的思想:
将字符串下标n数组元素与n+1的的所有元素判断是否相等,如果真,则将后面所有元素向前挪动一位,完毕后再次判断n是否等于n+1.以此完成去重
#include<stdio.h>
void main(){
//code start
printf("###输入字符串#标识结束:\n");
printf("\n");
//声明字符数组长度101并初始化
char str[101] = {'\0'};
//循环赋值直到下标99并判断遇到#结束, 留个元素给系统防止越界
for(int l = 0; l < 100;l++){
scanf("%c",&str[l]);
if(str[l] == '#'){str[l] = '\0';break;}
}
printf("\n");
printf("###输入结束\n");
printf("\n");
printf("###输入的字符串是: %s\n",str);
printf("\n");
//循环比对去重复
for(int i =0; str[i] != '\0';i++){
for(int k = 1+i; str[k] != '\0';k++){
int w = k;
while(str[i] == str[k]){
str[w] = str[w+1];
w++;
if(str[w] == '\0'){k-=1;break;}
}
}
}
printf("###字符去重复后: %s\n",str);
printf("\n");
printf("###根据字符小到大排序\n");
//排序
for(int z = 0; z < 100; z++){
if(str[z] == '\0'){
for(int x = 0; x < z;x++){
for(int g =0 ; g < z -x-1;g++){
if(str[g] > str[g+1]){
int temp = str[g];
str[g] = str[g+1];
str[g+1] = temp;
}
}
}
break;
}
}
printf("%s\n",str);
printf("\n");
printf("###程序运行完毕\n");
//code end
}