鱼C论坛

 找回密码
 立即注册
查看: 1298|回复: 9

[已解决]这个怎么回事哇

[复制链接]
发表于 2020-3-27 11:15:36 | 显示全部楼层 |阅读模式

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

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

x
捕获.PNG
  1.   1 #include<stdio.h>
  2.   2 #include<string.h>
  3.   3 #define num 21
  4.   4 int main()
  5.   5 {
  6.   6         char str1[num];
  7.   7         char str2[num];
  8.   8         int i=0,j;
  9.   9         int k=1,n=0,z=0;
  10. 10         int m,y;
  11. 11         printf("请输入一行文本:");
  12. 12         while((str1[i++] = getchar()) != '\n')
  13. 13         {
  14. 14                 ;
  15. 15         }
  16. 16         str1[i-1]='\0';
  17. 17         m=strlen(str1);
  18. 18         for(i=0;i<=strlen(str1);i++)//判断多个i
  19. 19         {
  20. 20                 for(j=i+1;j<=strlen(str1);j++)//判断第一个i
  21. 21                 {
  22. 22                         if(str1[i]==str1[j])
  23. 23                         {
  24. 24                                 k++;//计算一个重复的次数
  25. 25                         }
  26. 26                 }
  27. 27                 if(k==0)//后面没有跟他重复的就记录下来
  28. 28                 {
  29. 29                         str2[z]=str1[i];
  30. 30                         z++;
  31. 31                 }
  32. 32                 if(k>n)//最大重复的i
  33. 33                 {
  34. 34                         n=k;
  35. 35                         y=i;
  36. 36                 }
  37. 37                 k=0;
  38. 38         }
  39. 39         m=strlen(str2);
  40. 40         printf("你总输入了%d个字符,其中不同的字符个数有%d个.\n",i-1,m);
  41. 41         printf("他们是;%s\n",str2);
  42. 42         printf("出现的最多的字符\'%c\',他总共出现了%d次.\n",str1[y],n);
  43. 43         return 0;
  44. }
复制代码
最佳答案
2020-3-27 18:45:42
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(void)
  4. {
  5.         const char *w = "字";
  6.         printf("一个中文字符是%ld个字节\n", strlen(w));
  7.         return 0;
  8. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 12:03:50 | 显示全部楼层
输中文当然出乱码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 12:59:27 | 显示全部楼层
ba21 发表于 2020-3-27 12:03
输中文当然出乱码

但是还是有点不对,一个词运行被吞了一个A,是为啥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 16:42:52 | 显示全部楼层
有没有人哇
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 16:54:50 | 显示全部楼层

C语言中的字符串以 '\0' 结尾,你知道吗?
请仔细检查你的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:06:25 | 显示全部楼层
本帖最后由 孤世星辰 于 2020-3-27 18:07 编辑
人造人 发表于 2020-3-27 16:54
C语言中的字符串以 '\0' 结尾,你知道吗?
请仔细检查你的代码


我都加了的,我改出来了,,第一个是k初值有问题,还有一个是我是第一个和第二个比,一样才加一,这样就会少算一个,然后我每次那个重复的个数就会少一个,还想问一下为啥不能输入中文,输入中文算几个字符
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:08:22 | 显示全部楼层
ba21 发表于 2020-3-27 12:03
输中文当然出乱码

想问一下为啥不能输入中文,中文为啥算3个字符
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:41:45 | 显示全部楼层
孤世星辰 发表于 2020-3-27 18:08
想问一下为啥不能输入中文,中文为啥算3个字符

编码不一样,一个中文字符可能是2个字节,有可能是3个字节,或者其他
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:45:42 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(void)
  4. {
  5.         const char *w = "字";
  6.         printf("一个中文字符是%ld个字节\n", strlen(w));
  7.         return 0;
  8. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 19:45:41 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 20:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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