yueyufeng 发表于 2023-11-25 10:32:22

多次输入

找出句子中出现最多的字母和次数,有重复的取ascll小的

#include<stdio.h>
#include<string.h>
int main()
{
    char str;
    int i,num=0,max=0,ch;
    while(gets(str))
{
       int a=strlen(str);
       for(i=0;i<a;i++)
    {
      if(str!=' ')
      {
            ch]++;
      }
    }
      num=0,max=0;
       for(i=0;i<256;i++)
       {
         if(ch>max)
         {
               max=ch;
               num=i;
         }
         else if(ch==max&&i<num)
         {
               num=i;
         }
       }

       printf("%c %d\n",num,max);
}
    return 0;
}

FishC_GPT 发表于 2023-11-25 10:32:36

您好!根据您的要求,我编写了以下代码来解决您的问题:

#include <stdio.h>
#include <string.h>

int main()
{
    char str;
    int i, count = {0}; // 用于统计每个字母出现的次数

    printf("请输入句子:\n");

    while (gets(str))
    {
      int len = strlen(str);

      for (i = 0; i < len; i++)
      {
            // 只统计小写字母
            if (str >= 'a' && str <= 'z')
                count - 'a']++;
      }
    }

    int maxCount = 0;
    char maxChar;

    for (i = 0; i < 26; i++)
    {
      if (count > maxCount)
      {
            maxCount = count;
            maxChar = 'a' + i;
      }
    }

    printf("出现最多的字母是:%c,出现次数:%d\n", maxChar, maxCount);

    return 0;
}

这段代码中,我使用一个长度为26的整型数组`count`来统计每个字母出现的次数。首先,从用户输入的句子中读取每个字符,如果是小写字母,则将对应位置的计数器加1。然后,遍历计数数组,找到出现次数最多的字母和次数,并输出结果。

请注意,由于使用了`gets`函数来输入句子,这可能会存在一些安全性问题。在实际使用中,建议使用更安全的输入函数,比如`fgets`。

希望能帮到您!如果有任何问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yueyufeng 发表于 2023-11-25 10:34:16

FishC_GPT 发表于 2023-11-25 10:32
您好!根据您的要求,我编写了以下代码来解决您的问题:



你这个不能区分大小写,大小写不能一样

FishC_GPT 发表于 2023-11-25 10:34:27

yueyufeng 发表于 2023-11-25 10:34
你这个不能区分大小写,大小写不能一样

非常抱歉,我之前的代码确实没有考虑到区分大小写的问题。以下是修正后的代码,可以区分字母的大小写:#include #include int main(){    char str;    int i, len, count = {0}; // 用于统计每个字母出现的次数    printf("请输入句子:\n");    fgets(str, sizeof(str), stdin);    len = strlen(str);    for (i = 0; i < len; i++)    {      if (isalpha(str))      {            if (isupper(str))            {                count-'A']++;            }            else            {                count-'a']++;            }      }    }    int maxCount = 0;    char maxChar;    for(i=0; i<26; i++){      if(count > maxCount){            maxCount = count;            maxChar = 'A' + i;      }    }    printf("出现最多的字母是:%c,出现次数:%d\n", maxChar, maxCount);    return 0;}在这个代码中,我使用了`isalpha`函数来判断字符是否为字母,并使用`isupper`函数来判断字符是否为大写字母。根据字符的大小写不同,将其转换为对应的计数数组位置进行统计。然后,再遍历计数数组,找到出现次数最多的字母和次数,并输出结果。希望这次能够满足您的需求!如果还有其他问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yueyufeng 发表于 2023-11-25 10:35:37

FishC_GPT 发表于 2023-11-25 10:34
非常抱歉,我之前的代码确实没有考虑到区分大小写的问题。以下是修正后的代码,可以区分字母的大小写:#i ...

大小写都要统计

FishC_GPT 发表于 2023-11-25 10:35:57

yueyufeng 发表于 2023-11-25 10:35
大小写都要统计

非常抱歉,我之前的代码在统计字母出现次数时只考虑了大写字母,并没有统计小写字母。以下是修改后的代码,可以同时统计大小写字母的出现次数:#include #include int main(){    char str;    int i, len, count = {0}; // 用于统计每个字母出现的次数    printf("请输入句子:\n");    fgets(str, sizeof(str), stdin);    len = strlen(str);    for (i = 0; i < len; i++)    {      if (isalpha(str))      {            if (isupper(str))            {                count-'A']++;            }            else            {                count-'a'+26]++;            }      }    }    int maxCount = 0;    char maxChar;    for(i=0; i<52; i++){      if(count>maxCount){            maxCount = count;            if(i<26)                maxChar = 'A' + i;            else                maxChar = 'a' + i - 26;      }    }    printf("出现最多的字母是:%c,出现次数:%d\n", maxChar, maxCount);    return 0;}在这个代码中,我使用了一个长度为52的整型数组`count`来分别统计大小写字母的出现次数。根据字符的大小写不同,将其转换为对应的计数数组位置进行统计。然后,再遍历计数数组,找到出现次数最多的字母和次数,并输出结果。希望这次能够满足您的需求!如果还有其他问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

sfqxx 发表于 2023-11-25 10:47:12

所以你想表达什么?

sfqxx 发表于 2023-11-25 10:49:07

#include <stdio.h>
#include <string.h>

int main() {
    char str;
    int i, num = 0, max = 0, ch;

    while (fgets(str, sizeof(str), stdin)) {
      int a = strlen(str);
      memset(ch, 0, sizeof(ch)); // 初始化字符计数数组

      for (i = 0; i < a; i++) {
            if (str != ' ' && str != '\n') {
                ch]++;
            }
      }

      num = 0, max = 0;
      for (i = 0; i < 256; i++) {
            if (ch > max) {
                max = ch;
                num = i;
            } else if (ch == max && i < num) {
                num = i;
            }
      }

      printf("%c %d\n", num, max);
    }
    return 0;
}

sfqxx 发表于 2023-11-25 10:56:36

最佳答案?

isdkz 发表于 2023-11-25 15:16:06

sfqxx 发表于 2023-11-25 10:56
最佳答案?

你看得到?为什么我看到的是密码贴?

sfqxx 发表于 2023-11-25 17:39:50

isdkz 发表于 2023-11-25 15:16
你看得到?为什么我看到的是密码贴?

刚放出去没有设
页: [1]
查看完整版本: 多次输入