鱼C论坛

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

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

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

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

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

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

  3. void main()
  4. {
  5.         char str[100],*p,*q,*r,c;
  6.         printf("输入字符串:");
  7.         gets(str);
  8.         /**************FOUND********/
  9.         for(p=str;p;p++)
  10.         {
  11.                 for(q=r=p;*q;q++)
  12.                   if(*q<*r)
  13.                 r=q;
  14.                 /**************FOUND********/
  15.                 if(r==p)
  16.                 {
  17.                 /**************FOUND********/
  18.                 c=r;
  19.                 *r=*p;
  20.                 *p=c;
  21.                 }
  22.         }
  23.         for(p=str;*p;p++)
  24.         {
  25.                 for(q=p;*p==*q;q++)
  26.                 strcpy(p+1,q);
  27.         }
  28.         printf("结果字符串:%s\n\n",str);
  29.         getch();
  30. }
复制代码


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

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

  3. int main()
  4. {
  5.         char str[100],*p,*q,*r,c;
  6.         printf("输入字符串:");
  7.         gets(str);
  8.         /**************FOUND********/
  9.         for(p=str;*p;p++)
  10.         {
  11.                 for(q=r=p;*q;q++)
  12.                   if(*q<*r)
  13.                 r=q;
  14.                 /**************FOUND********/
  15.                 if(r!=p)
  16.                 {
  17.                 /**************FOUND********/
  18.                 c=*r;
  19.                 *r=*p;
  20.                 *p=c;
  21.                 }
  22.         }
  23.         for(p=str;*p;p++)
  24.         {
  25.                 for(q=p;*p==*q;q++)
  26.                 strcpy(p+1,q);
  27.         }
  28.         printf("结果字符串:%s\n\n",str);
  29.         getchar();
  30. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. int main()
  3. {
  4.         char str[100],*p,*q,c;
  5.         printf("请输入字符串:");
  6.         gets(str);
  7.         for(p=str;*p;p++)
  8.         {
  9.             for(q=str;*q;q++)
  10.             {
  11.                 if(*p>*q)
  12.                 {
  13.                     c=*p;
  14.                     *p=*q;
  15.                     *q=c;
  16.                 }
  17.             }
  18.         }
  19.         p=str;
  20.         printf("%c",*p);
  21.         for(q=str+1;*q;q++)
  22.         {
  23.             if(*q!=*(q-1)) printf("%c",*q);
  24.         }
  25.         return 0;
  26. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个意思?

  1. #include <stdio.h>

  2. int main(void) {
  3.     size_t count[256] = {0};
  4.     while(1) {
  5.         int ch = getchar();
  6.         if(ch == '\n') break;
  7.         ++count[ch];
  8.     }
  9.     for(size_t i = 0; i < 256; ++i) {
  10.         if(count[i]) putchar(i);
  11.     }
  12.     puts("");
  13.     return 0;
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯,这个算法我知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  7. int main(void) {
  8.     char buff[1024];
  9.     fgets(buff, 1024, stdin);
  10.     qsort(buff, strlen(buff), 1, cmp);
  11.     for(size_t i = 0; buff[i]; ++i) {
  12.         if(buff[i] != buff[i + 1])
  13.             putchar(buff[i]);
  14.     }
  15.     puts("");
  16.     return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-24 01:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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