/*该答案为加上裁判程序后的总程序,方便大家复制后进行验证学习*/
#include<stdio.h>
#include"string.h"
void dele(char arr[]);
int main(void)
{
char strA[81];
gets(strA);
dele(strA);
puts(strA);
return 0;
}
/*请在这里填写答案*/
void dele(char arr[]){
int i=0,j=0;
for(i=0;i<strlen(arr);i++){
if(arr[i]!=' '&&j<strlen(arr)){
arr[j]=arr[i];
j++;
}
}
arr[j]='\0';
/*去除数组里边的空格,得到不含空格的字符数组*/
int m,n,chang,k,x;
chang=strlen(arr);
x=strlen(arr);
for(m=0;m<chang-1;m++){
for(n=m+1;n<chang;n++){
if(arr[m]==arr[n]){
for(k=m;k<chang;k++){
arr[k]=arr[k+1];
}
chang--;
n=m;
}
}
}
/*通过将后边的字符向前填补,将重复的字符去除(注意此时最后一位字符是重复的)*/
int y,a=0;
y=strlen(arr);
for(m=0;m<y;m++){
if(arr[m]==arr[y-1]){
a++;
}
}
arr[y-a+1]='\0';
/*去除因为向前填补而导致重复的最后一个字符*/
chang=strlen(arr);
char t;
for(m=1;m<chang;m++){
for(n=0;n<chang-m;n++){
if(arr[n]>arr[n+1]){
t=arr[n];
arr[n]=arr[n+1];
arr[n+1]=t;
}
}
}
/*将去除了空格和重复的字符串重新排序*/
}
这道题比较复杂,我实力有限,分步骤求解。