鱼C论坛

 找回密码
 立即注册
查看: 700|回复: 10

多次输入

[复制链接]
发表于 2023-11-25 10:32:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5.     char str[10000];
  6.     int i,num=0,max=0,ch[256];
  7.     while(gets(str))
  8.   {
  9.        int a=strlen(str);
  10.        for(i=0;i<a;i++)
  11.     {
  12.         if(str[i]!=' ')
  13.         {
  14.             ch[str[i]]++;
  15.         }
  16.     }
  17.       num=0,max=0;
  18.        for(i=0;i<256;i++)
  19.        {
  20.            if(ch[i]>max)
  21.            {
  22.                max=ch[i];
  23.                num=i;
  24.            }
  25.            else if(ch[i]==max&&i<num)
  26.            {
  27.                num=i;
  28.            }
  29.        }

  30.        printf("%c %d\n",num,max);
  31.   }
  32.     return 0;
  33. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-25 10:32:36 | 显示全部楼层
您好!根据您的要求,我编写了以下代码来解决您的问题:
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     char str[100];
  6.     int i, count[26] = {0}; // 用于统计每个字母出现的次数
  7.     printf("请输入句子:\n");
  8.     while (gets(str))
  9.     {
  10.         int len = strlen(str);
  11.         for (i = 0; i < len; i++)
  12.         {
  13.             // 只统计小写字母
  14.             if (str[i] >= 'a' && str[i] <= 'z')
  15.                 count[str[i] - 'a']++;
  16.         }
  17.     }
  18.     int maxCount = 0;
  19.     char maxChar;
  20.     for (i = 0; i < 26; i++)
  21.     {
  22.         if (count[i] > maxCount)
  23.         {
  24.             maxCount = count[i];
  25.             maxChar = 'a' + i;
  26.         }
  27.     }
  28.     printf("出现最多的字母是:%c,出现次数:%d\n", maxChar, maxCount);
  29.     return 0;
  30. }
复制代码

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

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

希望能帮到您!如果有任何问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-25 10:34:16 | 显示全部楼层
FishC_GPT 发表于 2023-11-25 10:32
您好!根据您的要求,我编写了以下代码来解决您的问题:

你这个不能区分大小写,大小写不能一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 10:34:27 | 显示全部楼层
yueyufeng 发表于 2023-11-25 10:34
你这个不能区分大小写,大小写不能一样

非常抱歉,我之前的代码确实没有考虑到区分大小写的问题。以下是修正后的代码,可以区分字母的大小写:#include #include int main(){    char str[100];    int i, len, count[26] = {0}; // 用于统计每个字母出现的次数    printf("请输入句子:\n");    fgets(str, sizeof(str), stdin);    len = strlen(str);    for (i = 0; i < len; i++)    {        if (isalpha(str))        {            if (isupper(str))            {                count[str-'A']++;            }            else            {                count[str-'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官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大小写都要统计
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 10:35:57 | 显示全部楼层

非常抱歉,我之前的代码在统计字母出现次数时只考虑了大写字母,并没有统计小写字母。以下是修改后的代码,可以同时统计大小写字母的出现次数:#include #include int main(){    char str[100];    int i, len, count[52] = {0}; // 用于统计每个字母出现的次数    printf("请输入句子:\n");    fgets(str, sizeof(str), stdin);    len = strlen(str);    for (i = 0; i < len; i++)    {        if (isalpha(str))        {            if (isupper(str))            {                count[str-'A']++;            }            else            {                count[str-'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官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 10:47:12 | 显示全部楼层
所以你想表达什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 10:49:07 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main() {
  4.     char str[10000];
  5.     int i, num = 0, max = 0, ch[256];

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

  9.         for (i = 0; i < a; i++) {
  10.             if (str[i] != ' ' && str[i] != '\n') {
  11.                 ch[str[i]]++;
  12.             }
  13.         }

  14.         num = 0, max = 0;
  15.         for (i = 0; i < 256; i++) {
  16.             if (ch[i] > max) {
  17.                 max = ch[i];
  18.                 num = i;
  19.             } else if (ch[i] == max && i < num) {
  20.                 num = i;
  21.             }
  22.         }

  23.         printf("%c %d\n", num, max);
  24.     }
  25.     return 0;
  26. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 10:56:36 | 显示全部楼层
最佳答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 15:16:06 | 显示全部楼层

你看得到?为什么我看到的是密码贴?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 17:39:50 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-11-25 15:16
你看得到?为什么我看到的是密码贴?

刚放出去没有设
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 14:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表