读不懂语法的程序猿 2022-11-12 16:01 采纳率: 86.5%
浏览 53
已结题

用C语言删除重复字符串

问题遇到的现象和发生背景

img


为什么输入重复的字符S第二次的S没有输出?

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <string.h>
char a[1005];
int main ()
{
    int j,n;
    gets(a);
    n=strlen(a);
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(a[i]==a[j])
            {
                for(int k=j;k<n;k++)
                {
                    a[k]=a[k+1];
                }
                n--;
                j--;
            }
        }
    }
    printf("%s",a);
    return 0;    
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-12 17:01
    关注

    供参考:

    #include <stdio.h>
    #define N 1005
    int main()
    {
        int   i, j, n;
        char  a[N],flg;
        gets(a);
        for (flg = a[0],i = 0,j = 0; a[i]; i++)
        {
            if (a[i] - flg)
                a[j++] = a[i];
            if (i == 0)
                a[j++] = a[i];
            flg = a[j-1];
        }
        a[j] = '\0';
        printf("%s" , a);
        return 0;
    }
    
    

    题主的代码修改如下,见注释,供参考:

    #include <stdio.h>
    #include <string.h>
    char a[1005];
    int main ()
    {
        int i,j,n;      //修改
        gets(a);
        n=strlen(a);
        for(i=0;i<n-1;) //(int i=0;i<n;i++)
        {
            if (a[i] == a[i+1])
            {
                for(j=i+1;j<n-1;j++) //(int j=i+1;j<n;j++)
                {
                                 //if(a[i]==a[j])
                                 //{
                                 //    for(int k=j;k<n;k++)
                                 //    {
                    a[j]=a[j+1]; //a[k]=a[k+1];
                                 //    }
                                 //n--;
                                 //j--;
                }
                n--;             //修改
            }
            else
                i++;             //修改
        }
        a[n] = '\0';           //修改
        printf("%s",a);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月20日
  • 已采纳回答 11月12日
  • 创建了问题 11月12日

悬赏问题

  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致