我爱橙 发表于 2022-4-18 19:34:11

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

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

void main()
{
        char str,*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,*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();
}

wp231957 发表于 2022-4-19 10:38:19

#include<stdio.h>

int main()
{
      char str,*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;
}

人造人 发表于 2022-4-19 12:16:27

wp231957 发表于 2022-4-19 10:38


这个意思?

#include <stdio.h>

int main(void) {
    size_t count = {0};
    while(1) {
      int ch = getchar();
      if(ch == '\n') break;
      ++count;
    }
    for(size_t i = 0; i < 256; ++i) {
      if(count) putchar(i);
    }
    puts("");
    return 0;
}

wp231957 发表于 2022-4-19 12:18:05

人造人 发表于 2022-4-19 12:16
这个意思?

嗯,这个算法我知道

人造人 发表于 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;
    fgets(buff, 1024, stdin);
    qsort(buff, strlen(buff), 1, cmp);
    for(size_t i = 0; buff; ++i) {
      if(buff != buff)
            putchar(buff);
    }
    puts("");
    return 0;
}
页: [1]
查看完整版本: C3 从键盘接收一个字符串,然后按照字符顺序从小到大进行排序并删除重复字符