鱼C论坛

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

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

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

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

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

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

int main(void)
{
        const char *w = "字";
        printf("一个中文字符是%ld个字节\n", strlen(w));
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 12:03:50 | 显示全部楼层
输中文当然出乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

但是还是有点不对,一个词运行被吞了一个A,是为啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 16:42:52 | 显示全部楼层
有没有人哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

C语言中的字符串以 '\0' 结尾,你知道吗?
请仔细检查你的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

使用道具 举报

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

想问一下为啥不能输入中文,中文为啥算3个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

编码不一样,一个中文字符可能是2个字节,有可能是3个字节,或者其他
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

int main(void)
{
        const char *w = "字";
        printf("一个中文字符是%ld个字节\n", strlen(w));
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 19:45:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 17:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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