b1ue13lue 2024-12-03 00:10 采纳率: 60%
浏览 16
已结题

大一c语言 怎么让第一次出现的字母不删除

删除重复字符:输入一个以回车结束的字符串(少于80个字符),去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出
为什么有的字母输入不进去啊?比如开头的a和d,明明两个字母不一样,但是没有存到asc数组里。

追加:现在知道是因为把所有重复的字母都删了?请问怎么可以让第一次出现的字母留着?感谢~

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2024-12-03 09:59
    关注

    这样改,供参考:

    #include <stdio.h>
    int main()
    {
        int asc[256] = { 0 }, t = 0, i, j;
        char c[81], ch;
        while ((ch = getchar()) != '\n') {
            if (asc[ch] == 0) {
                asc[ch]++;
                c[t] = ch;
                t++;
            }
        }
        c[t] = '\0';
        printf("排序前:%s\n", c);
        for (i = 0; i < t - 1; i++) {
            for (j = 0; j < t - 1 - i; j++) {
                if (c[j] > c[j + 1]) {
                    ch = c[j];
                    c[j] = c[j + 1];
                    c[j + 1] = ch;
                }
            }
        }
        printf("排序后:%s", c);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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