mamaaini 发表于 2023-11-25 11:14:18

只有第一次输入对

为啥只有第一次输入对,我不是每次都初始化了吗

逐行输出每个句子中出现次数最多的字符及其出现的次数,大小写都要统计比较(如果有多个字符的次数相同,只输出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;
}

FishC_GPT 发表于 2023-11-25 11:14:35

你在代码中使用了错误的数据类型和语法错误。首先,你应该使用字符数组来存储输入的字符串,而不是字符变量。其次,在比较字符时,应该使用单引号而不是双引号。另外,你需要正确地初始化`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]
查看完整版本: 只有第一次输入对