当前位置: 代码迷 >> C语言 >> 一个有关于数组的问题有待大家解决
  详细解决方案

一个有关于数组的问题有待大家解决

热度:125   发布时间:2007-11-16 14:36:10.0
一个有关于数组的问题有待大家解决
编一个程序,把从标准输入文件(键盘)中所包含的每个字母(不分大小写)出现的次数进行统计,统计结果存放在一个长度为27的一维数组中,前26个数组元素顺序存放A-Z(a-z)的出现次数,最后一个数组元素存放非字母字符的个数。

这个问题急待解决,大家帮忙解决一下。
搜索更多相关的解决方案: 统计  字母  元素  

----------------解决方案--------------------------------------------------------

这个问题,如果没有特别要求(如速度)的话,搞个循环就行了.


----------------解决方案--------------------------------------------------------

4.从终端输入一串字符,统计其中每个字母的个数,非字母的个数用第27个元素统计。
#include "stdio.h"
#include "ctype.h"
main()
{
int count[27],i;
char ch;
for(i=0;i<27;i++)
{
count[i]=0;
}
while((ch=getchar())!='\n')
{
if(isalpha(ch))
{
ch=tolower(ch);
count[ch-'a']++;
}
else
{
count[26]++;
}
}
for(i=0;i<27;i++)
{
printf("%d ",count[i]);
}

}


----------------解决方案--------------------------------------------------------

是否能解释一下?


----------------解决方案--------------------------------------------------------
if(isalpha(ch))
ch=tolower(ch);
count[ch-'a']++;
这几个语句我不太明白

----------------解决方案--------------------------------------------------------

3楼判别字符是否为字母的函数写错了
应该是isapha()
if(isapha(ch)) /*判别字符是否为字母*/
ch=tolower(ch); /*将字母转换成小写*/
count[ch-'a']++; /*统计各个字母的个数*/


----------------解决方案--------------------------------------------------------
边听国际歌 边理解 在抄 去阶梯教室慢慢看
----------------解决方案--------------------------------------------------------
以下是引用刹那公子在2007-11-16 19:00:49的发言:

3楼判别字符是否为字母的函数写错了
应该是isapha()
if(isapha(ch)) /*判别字符是否为字母*/
ch=tolower(ch); /*将字母转换成小写*/
count[ch-'a']++; /*统计各个字母的个数*/

是你写错了,标准函数库的话应该是 isalpha()
----------------解决方案--------------------------------------------------------

这个程序可以不用字符函数做么?
#include"stdio.h"
main()
{
int i,j,sum=0;
int a[27]={0,0},z[26];
char str[1000];
gets(str);
a[26]=strlen(str);
for(i=0;i<strlen(str);i++)
for(j=0;j<26;j++)
if(str[i]=='A'+j||str[i]=='a'+j)
a[j]=a[j]+1;
for(j=0;j<26;j++)
a[j]++;
a[26]=a[26]-sum;
for(j=0;j<26;j++)
z[j]='A'+j;
for(j=0;j<26;j++)
printf("%5c : %d\n",z[j],a[j]);
printf("other : %d\n",a[26]);
}


----------------解决方案--------------------------------------------------------
不会用库函数就自己写,反正这几个很简单

while(str[i]!='\0')
{
if('A'<=str[i]&&str[i]<='Z')
{
data[str[i]-'A']++;
}
else
{
if('a'<=str[i]&&str[i]<='z')
{
data[str[i]-'a']++;
}
else
{
data[26]++;
}
}
----------------解决方案--------------------------------------------------------
  相关解决方案