编写一段程序,输入若干个单词,按照单词长短进行排序,并统计所有单词中每个字母(a-z)出现的次数
1.解题方法(用文字描绘解决问题的思路)2.涉及的语法知识(用文字介绍编程所需的语法知识)3.代码...
1.解题方法(用文字描绘解决问题的思路)
2.涉及的语法知识(用文字介绍编程所需的语法知识)
3.代码 展开
2.涉及的语法知识(用文字介绍编程所需的语法知识)
3.代码 展开
1个回答
展开全部
解题方法:输入单词放入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]);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询