只有第一次输入对
为啥只有第一次输入对,我不是每次都初始化了吗逐行输出每个句子中出现次数最多的字符及其出现的次数,大小写都要统计比较(如果有多个字符的次数相同,只输出ASCII码最小的字符)。
#include<stdio.h>
#include<string.h>
int main()
{
char str,ch,max_char;
int i,max_count;
while(fgets(str,10000,stdin)!=NULL)
{
int a=strlen(str);
for(i=0;i<a;i++)
{
if(str!=' ')
{
if(str>='A'&&str<='Z')
{
ch-'A']++;
}
else if(str>='a'&&str<='z')
{
ch-'a'+26]++;
}
}
}
for(i=0;i<52;i++)
{
if(ch>max_count)
{
max_count=ch;
max_char=i;
}
else if(ch==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, max_char;
int i, max_count;
while(fgets(str, 10000, stdin) != NULL)
{
int count = {0}; // 用于记录每个字符出现的次数
max_count = 0;
for(i = 0; i < strlen(str); i++)
{
if((str >= 'A' && str <= 'Z') || (str >= 'a' && str <= 'z'))
{
count]++; // 统计字符出现次数
if(count] > max_count)
{
max_count = count];
max_char = str;
}
else if(count] == max_count && str < max_char)
{
max_char = str;
}
}
}
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官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]