鱼C论坛

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

多次输入

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

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

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

x
找出句子中出现最多的字母和次数,有重复的取ascll小的
#include<stdio.h>
#include<string.h>
int main()
{
    char str[10000];
    int i,num=0,max=0,ch[256];
    while(gets(str))
  {
       int a=strlen(str);
       for(i=0;i<a;i++)
    {
        if(str[i]!=' ')
        {
            ch[str[i]]++;
        }
    }
      num=0,max=0;
       for(i=0;i<256;i++)
       {
           if(ch[i]>max)
           {
               max=ch[i];
               num=i;
           }
           else if(ch[i]==max&&i<num)
           {
               num=i;
           }
       }

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

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

使用道具 举报

发表于 2023-11-25 10:32:36 | 显示全部楼层
您好!根据您的要求,我编写了以下代码来解决您的问题:
#include <stdio.h>#include <string.h>int main(){    char str[100];    int i, count[26] = {0}; // 用于统计每个字母出现的次数    printf("请输入句子:\n");    while (gets(str))    {        int len = strlen(str);        for (i = 0; i < len; i++)        {            // 只统计小写字母            if (str[i] >= 'a' && str[i] <= 'z')                count[str[i] - 'a']++;        }    }    int maxCount = 0;    char maxChar;    for (i = 0; i < 26; i++)    {        if (count[i] > maxCount)        {            maxCount = count[i];            maxChar = 'a' + i;        }    }    printf("出现最多的字母是:%c,出现次数:%d\n", maxChar, maxCount);    return 0;}
这段代码中,我使用一个长度为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[i]))        {            if (isupper(str[i]))            {                count[str[i]-'A']++;            }            else            {                count[str[i]-'a']++;            }        }    }    int maxCount = 0;    char maxChar;    for(i=0; i<26; i++){        if(count[i] > maxCount){            maxCount = count[i];            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[i]))        {            if (isupper(str[i]))            {                count[str[i]-'A']++;            }            else            {                count[str[i]-'a'+26]++;            }        }    }    int maxCount = 0;    char maxChar;    for(i=0; i<52; i++){        if(count[i]>maxCount){            maxCount = count[i];            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 | 显示全部楼层
#include <stdio.h>
#include <string.h>

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

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

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

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

        printf("%c %d\n", num, max);
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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-11-23 12:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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