|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为啥只有第一次输入对,我不是每次都初始化了吗
逐行输出每个句子中出现次数最多的字符及其出现的次数,大小写都要统计比较(如果有多个字符的次数相同,只输出ASCII码最小的字符)。
- #include<stdio.h>
- #include<string.h>
- int main()
- {
- char str[10000],ch[52],max_char;
- int i,max_count;
- while(fgets(str,10000,stdin)!=NULL)
- {
- int a=strlen(str);
- for(i=0;i<a;i++)
- {
- if(str[i]!=' ')
- {
- if(str[i]>='A'&&str[i]<='Z')
- {
- ch[str[i]-'A']++;
- }
- else if(str[i]>='a'&&str[i]<='z')
- {
- ch[str[i]-'a'+26]++;
- }
- }
- }
- for(i=0;i<52;i++)
- {
- if(ch[i]>max_count)
- {
- max_count=ch[i];
- max_char=i;
- }
- else if(ch[i]==max_count&&i<max_char)
- {
- max_char=i;
- }
- }
- if(max_char<26)
- {
- printf("%c %d\n",max_char+'A',max_count);
- }
- if(max_char>=26&&max_char<52)
- {
- printf("%c %d\n",max_char+'a'-26,max_count);
- }
- max_count=0,max_char='a';
- }
- return 0;
- }
复制代码
你在代码中使用了错误的数据类型和语法错误。首先,你应该使用字符数组来存储输入的字符串,而不是字符变量。其次,在比较字符时,应该使用单引号而不是双引号。另外,你需要正确地初始化`max_count`和`max_char`,并且在每次循环之前重新设置它们的值。
这里是修正后的代码示例:
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[10000], max_char;
- int i, max_count;
-
- while(fgets(str, 10000, stdin) != NULL)
- {
- int count[256] = {0}; // 用于记录每个字符出现的次数
-
- max_count = 0;
- for(i = 0; i < strlen(str); i++)
- {
- if((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))
- {
- count[str[i]]++; // 统计字符出现次数
- if(count[str[i]] > max_count)
- {
- max_count = count[str[i]];
- max_char = str[i];
- }
- else if(count[str[i]] == max_count && str[i] < max_char)
- {
- max_char = str[i];
- }
- }
- }
-
- printf("%c %d\n", max_char, max_count);
- }
-
- return 0;
- }
复制代码
这段代码中创建了一个大小为256的`count`数组,用于记录每个字符的出现次数。然后,在遍历输入的字符串时,对于每个字母字符,将对应的`count`数组元素加1,并与当前的`max_count`进行比较。如果出现次数更大,则更新`max_count`和`max_char`。如果出现次数相同,但字符的ASCII码更小,则更新`max_char`。
最后,打印出最大出现次数的字符及其次数。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
|
|