鱼C论坛

 找回密码
 立即注册
查看: 5086|回复: 4

C3 从键盘接收一个字符串,然后按照字符顺序从小到大进行排序并删除重复字符

[复制链接]
发表于 2022-4-18 19:34:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<string.h>

void main()
{
        char str[100],*p,*q,*r,c;
        printf("输入字符串:");
        gets(str); 
        /**************FOUND********/
        for(p=str;p;p++)
        {
                for(q=r=p;*q;q++)
                  if(*q<*r)
                r=q;
                /**************FOUND********/
                if(r==p)
                {
                /**************FOUND********/
                c=r;
                *r=*p;
                *p=c;
                }
        }
        for(p=str;*p;p++)
        {
                for(q=p;*p==*q;q++)
                strcpy(p+1,q);
        }
        printf("结果字符串:%s\n\n",str);
        getch();
}

C1:for(p=str;*p;p++)
C2:if(r!=p)
C3:c=*r;

Q:改正之后还是运行不出实现程序功能
#include<stdio.h>
#include<string.h>

int main()
{
        char str[100],*p,*q,*r,c;
        printf("输入字符串:");
        gets(str); 
        /**************FOUND********/
        for(p=str;*p;p++)
        {
                for(q=r=p;*q;q++)
                  if(*q<*r)
                r=q;
                /**************FOUND********/
                if(r!=p)
                {
                /**************FOUND********/
                c=*r;
                *r=*p;
                *p=c;
                }
        }
        for(p=str;*p;p++)
        {
                for(q=p;*p==*q;q++)
                strcpy(p+1,q);
        }
        printf("结果字符串:%s\n\n",str);
        getchar();
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-19 10:38:19 | 显示全部楼层
#include<stdio.h>

int main()
{
        char str[100],*p,*q,c;
        printf("请输入字符串:");
        gets(str); 
        for(p=str;*p;p++)
        {
            for(q=str;*q;q++)
            {
                if(*p>*q)
                {
                    c=*p;
                    *p=*q;
                    *q=c;
                }
            }
        }
        p=str;
        printf("%c",*p);
        for(q=str+1;*q;q++)
        {
            if(*q!=*(q-1)) printf("%c",*q);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-19 12:16:27 | 显示全部楼层

这个意思?
#include <stdio.h>

int main(void) {
    size_t count[256] = {0};
    while(1) {
        int ch = getchar();
        if(ch == '\n') break;
        ++count[ch];
    }
    for(size_t i = 0; i < 256; ++i) {
        if(count[i]) putchar(i);
    }
    puts("");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-19 12:18:05 From FishC Mobile | 显示全部楼层
人造人 发表于 2022-4-19 12:16
这个意思?

嗯,这个算法我知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-19 13:12:30 | 显示全部楼层
wp231957 发表于 2022-4-19 12:18
嗯,这个算法我知道
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp(const void *a, const void *b) {
    return *(const char *)a - *(const char *)b;
}

int main(void) {
    char buff[1024];
    fgets(buff, 1024, stdin);
    qsort(buff, strlen(buff), 1, cmp);
    for(size_t i = 0; buff[i]; ++i) {
        if(buff[i] != buff[i + 1])
            putchar(buff[i]);
    }
    puts("");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表