C语言中删除字符串中的重复字符,然后输出新的字符串

2025-04-02 11:05:24
推荐回答(3个)
回答1:

#include 
#include 
int main()
{
   char c,str[80];
   int i=0,j,k,len;
   printf("input:");
   gets(str);
   len=strlen(str);
   c=str[i];
   while(c!='\0')
   {
     for(j=i+1;str[j]!='\0';j++)
     {
      if(str[j]==c)
       {
  for(k=j;str[k]!='\0';k++)
  str[k]=str[k+1];
  len--;
       }
 }
c=str[i++];
   }
   puts(str);
   getchar();
}

改动后可以运行了,你的错误:
1.包含的第二个头文件少写个h
2.在发现重复字符后需要删除时,if语句里for循环使用了j和外面大循环的j重复,会造成不可预料的错误
3.else后面的赋值不正确,应该等第一个for循环结束后,而不是if判断后

回答2:

这个可以了!
#include #include void main(){ char str[80]; int j,len,i,k; printf("input:"); gets(str); len=strlen(str); for(i=0;i<=len;i++) { for(j=i;j<=len;j++) { if(str[j]==str[i]) { k=i; while(str[k]!=0) { str[k]=str[k+1]; k++; } len--; } } } puts(str);}

回答3:

你的程序我就懒得看啦。不过呢,可以根据我的经验给你个思路。可以来一个类似于冒泡法的算法函数,逐一循环比较该字符串的ASCII码值,相同去掉,不同丢到一个数组中去。