请高手帮忙

tangsijun4 2003-05-17 09:58:13
假如有一字符串"ABEDESBAE",如何求出其字符中不同字符的个数(如A有多少个,B有多少个....),并将不同字符的个数定入数组temp[].
请问用C该如何写程序呀?
...全文
11 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shishiXP 2003-05-19
#include <iostream.h>
int temp[26]={0}; //如果只有大写字母的话
char s[]="ABEDESBAE";

void f(const char *s)
{
for(;*s!='\0';s++)temp[*s-'A']++;
}
void output()
{
for(int i=0;i<26;i++)if(temp[i])cout<<(char)(i+'A')<<temp[i]<<"个 ";
}
void main()
{
f(s);
output();
}
回复
meteor135 2003-05-19
这个功能不完整的程序演示了如何统计键盘输入流中不同字符出现的频率,我想对于你的问题有帮助吧?
#include <stdio.h>
#include <stdlib.h>

typedef struct charNode
{
int rptTime;
char character;
}charNodeType;

void main()
{
int i,j,k;
int total;
char c;

charNodeType *charNodeArray;

int size=1000;

charNodeArray=(charNodeType *)malloc(sizeof(charNodeType)*size);

charNodeArray[0].rptTime=1;
charNodeArray[0].character=getchar();

k=0;
i=0;
while((c=getchar())!=EOF)//统计字符及出现的频率
{
k ++;//统计输入的总字符数
for(j=0;j<=i;j++)
{
if(charNodeArray[j].character==c)
{
charNodeArray[j].rptTime++;
c='\0';
break;
}
}
if(c)
{
charNodeArray[++i].character=c;
charNodeArray[i].rptTime=1;
}
}

total=i;

for(i=0;i<total;i++)
{
printf("%c\t%4d:\n",charNodeArray[i].character,charNodeArray[i].rptTime);
}

printf("\nTotal characters :%d\n",k);
free(charNodeArray);

}
回复
Muf 2003-05-17
错了
while(*p)temp[*p++ -'A']++;
回复
Muf 2003-05-17
int temp[26];
char s[]="ABEDESBAE";

...
char* p = s;
while(*p)temp[*p++]++;
回复
相关推荐
发帖
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-05-17 09:58
社区公告
暂无公告