| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 882 人关注过本帖
标题:一个有关于数组的问题有待大家解决
只看楼主 加入收藏
zylwzg
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-11-4
结帖率:100%
收藏
 问题点数:0 回复次数:11 
一个有关于数组的问题有待大家解决
编一个程序,把从标准输入文件(键盘)中所包含的每个字母(不分大小写)出现的次数进行统计,统计结果存放在一个长度为27的一维数组中,前26个数组元素顺序存放A-Z(a-z)的出现次数,最后一个数组元素存放非字母字符的个数。

这个问题急待解决,大家帮忙解决一下。
搜索更多相关主题的帖子: 统计 字母 元素 
2007-11-16 14:36
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 

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


清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-11-16 15:06
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
收藏
得分:0 

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]);
}

}


行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2007-11-16 15:27
zylwzg
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-11-4
收藏
得分:0 

是否能解释一下?


感谢大家的支持和帮助.
2007-11-16 15:35
zylwzg
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-11-4
收藏
得分:0 
if(isalpha(ch))
ch=tolower(ch);
count[ch-'a']++;
这几个语句我不太明白

感谢大家的支持和帮助.
2007-11-16 15:37
刹那公子
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-9-26
收藏
得分:0 

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


2007-11-16 19:00
chengyukyo1
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-10-18
收藏
得分:0 
边听国际歌 边理解 在抄 去阶梯教室慢慢看
2007-11-16 20:40
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用刹那公子在2007-11-16 19:00:49的发言:

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

是你写错了,标准函数库的话应该是 isalpha()


—>〉Sun〈<—
2007-11-16 21:24
zylwzg
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-11-4
收藏
得分:0 

这个程序可以不用字符函数做么?
#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]);
}


感谢大家的支持和帮助.
2007-11-20 21:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
不会用库函数就自己写,反正这几个很简单

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]++;
}
}

倚天照海花无数,流水高山心自知。
2007-11-20 21:34
快速回复:一个有关于数组的问题有待大家解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013269 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved