这个怎么回事哇
1 #include<stdio.h>
2 #include<string.h>
3 #define num 21
4 int main()
5 {
6 char str1;
7 char str2;
8 int i=0,j;
9 int k=1,n=0,z=0;
10 int m,y;
11 printf("请输入一行文本:");
12 while((str1 = getchar()) != '\n')
13 {
14 ;
15 }
16 str1='\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==str1)
23 {
24 k++;//计算一个重复的次数
25 }
26 }
27 if(k==0)//后面没有跟他重复的就记录下来
28 {
29 str2=str1;
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,n);
43 return 0;
} 输中文当然出乱码 ba21 发表于 2020-3-27 12:03
输中文当然出乱码
但是还是有点不对,一个词运行被吞了一个A,是为啥
有没有人哇 孤世星辰 发表于 2020-3-27 16:42
有没有人哇
C语言中的字符串以 '\0' 结尾,你知道吗?
请仔细检查你的代码
本帖最后由 孤世星辰 于 2020-3-27 18:07 编辑
人造人 发表于 2020-3-27 16:54
C语言中的字符串以 '\0' 结尾,你知道吗?
请仔细检查你的代码
我都加了的,我改出来了,,第一个是k初值有问题,还有一个是我是第一个和第二个比,一样才加一,这样就会少算一个,然后我每次那个重复的个数就会少一个,还想问一下为啥不能输入中文,输入中文算几个字符 ba21 发表于 2020-3-27 12:03
输中文当然出乱码
想问一下为啥不能输入中文,中文为啥算3个字符 孤世星辰 发表于 2020-3-27 18:08
想问一下为啥不能输入中文,中文为啥算3个字符
编码不一样,一个中文字符可能是2个字节,有可能是3个字节,或者其他 #include <stdio.h>
#include <string.h>
int main(void)
{
const char *w = "字";
printf("一个中文字符是%ld个字节\n", strlen(w));
return 0;
}
人造人 发表于 2020-3-27 18:45
谢谢
页:
[1]