鱼C论坛

 找回密码
 立即注册
查看: 2502|回复: 1

[已解决]为什么程序运行之后只统计了小写的字母,没有统计到大写的字母?

[复制链接]
发表于 2021-11-7 22:27:29 | 显示全部楼层 |阅读模式

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

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

x
题目:要求统计每个字母出现的次数,不区分大小写

代码:
#include <stdio.h>

struct Count
{
    char word[26];
    int num[26];
}count;


void main()
{
    char string[]="AAABBcdzz",*str;
    str=string;
    for(int i=0;i<26;i++)
    {
        count.word[i]='a'+i;
        count.num[i]=0;
    }

    for(int j=0;'a'+j<='z';j++)
    {
        for(int i=0;*(str+i)!='\0';i++)
        {
            if(*(str+i)==count.word[j] || *(str+i)==count.word[j]+32)
            {
                count.num[j]++;
            }
        }
    }

    for(int n=0;n<26;n++)
    {
        if(count.num[n]!=0)
        printf("%c  %d\n",count.word[n],count.num[n]);
    }
}

运行结果:
c  1
d  1
z  2
最佳答案
2021-11-7 22:57:00
#include <stdio.h>

struct Count
{
    char word[26];
    int num[26];
}count;


//void main()   // error
int main(void)
{
    char string[]="AAABBcdzz",*str;
    str=string;
    for(int i=0;i<26;i++)
    {
        count.word[i]='a'+i;
        count.num[i]=0;
    }

    for(int j=0;'a'+j<='z';j++)
    {
        for(int i=0;*(str+i)!='\0';i++)
        {
            //if(*(str+i)==count.word[j] || *(str+i)==count.word[j]+32)
            //if(*(str+i)==count.word[j] || *(str+i)==count.word[j]-32)
            if(str[i] == count.word[j] || str[i] == count.word[j] - 'a' + 'A')
            {
                count.num[j]++;
            }
        }
    }

    for(int n=0;n<26;n++)
    {
        if(count.num[n]!=0)
        printf("%c  %d\n",count.word[n],count.num[n]);
    }

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

使用道具 举报

发表于 2021-11-7 22:57:00 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

struct Count
{
    char word[26];
    int num[26];
}count;


//void main()   // error
int main(void)
{
    char string[]="AAABBcdzz",*str;
    str=string;
    for(int i=0;i<26;i++)
    {
        count.word[i]='a'+i;
        count.num[i]=0;
    }

    for(int j=0;'a'+j<='z';j++)
    {
        for(int i=0;*(str+i)!='\0';i++)
        {
            //if(*(str+i)==count.word[j] || *(str+i)==count.word[j]+32)
            //if(*(str+i)==count.word[j] || *(str+i)==count.word[j]-32)
            if(str[i] == count.word[j] || str[i] == count.word[j] - 'a' + 'A')
            {
                count.num[j]++;
            }
        }
    }

    for(int n=0;n<26;n++)
    {
        if(count.num[n]!=0)
        printf("%c  %d\n",count.word[n],count.num[n]);
    }

    return 0;
}

评分

参与人数 1荣誉 +4 收起 理由
redHmian + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-4 16:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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