编写一段程序,输入若干个单词,按照单词长短进行排序,并统计所有单词中每个字母(a-z)出现的次数

1.解题方法(用文字描绘解决问题的思路)2.涉及的语法知识(用文字介绍编程所需的语法知识)3.代码... 1.解题方法(用文字描绘解决问题的思路)
2.涉及的语法知识(用文字介绍编程所需的语法知识)
3.代码
展开
 我来答
百度网友8b58de0
2019-05-26 · TA获得超过945个赞
知道小有建树答主
回答量:1079
采纳率:83%
帮助的人:323万
展开全部

解题方法:输入单词放入words二维字符串数组缓冲,然后根据长度进行选择排序。统计单词是建立26个元素大小的一维数组letters,遍历全部单词中的每个字母,如果是字母a或A就把letters[0]的值加1,b或B就把letters[1]的值加1,类推。最后显示结果。

代码如下:

#include <stdlib.h>
#include <string.h>

int main()
{
    int i,j,n;
    char words[100][32],tmp[32],letters[26];
    printf("输入单词数量:");
    scanf("%d",&n);
    printf("输入%d个单词:",n);
    for(i=0;i<n;i++)
    {
        scanf("%s",words[i]);
    }

    //选择排序
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(strlen(words[j])<strlen(words[i]))
            {
                strcpy(tmp,words[i]);
                strcpy(words[i],words[j]);
                strcpy(words[j],tmp);
            }
        }
    }

    //统计字母
    for(i=0;i<26;i++) letters[i]=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<strlen(words[i]);j++)
        {
            if(words[i][j]>='A'&&words[i][j]<='Z')
                letters[words[i][j]-'A']++;
            else if(words[i][j]>='a'&&words[i][j]<='z')
                letters[words[i][j]-'a']++;
        }
    }

    //输出排序后的单词
    for(i=0;i<n;i++) printf("%s ",words[i]);
    printf("\n");
    //输出统计后的字母数
    for(i=0;i<26;i++)
    {
        if(letters[i]) printf("%c:%d个\n",i+'a',letters[i]);
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式