C++,输入一个字符串,统计个字母出现的次数,并按字母出现的多少输出,不出现的不输出。例如;输入5b3a+ 10

输入5b3a+4-hdeh5dh?输出;h3d2a1b1e1先输出字母出现多的,出现相同的按字母表顺序输出,没出现的字母不输出。#include<stdio.h>#inc... 输入5b3a+4-hdeh5dh?
输出; h 3
d 2
a 1
b 1
e 1
先输出字母出现多的,出现相同的按字母表顺序输出,没出现的字母不输出。
#include<stdio.h>
#include<math.h>
void main()
{
char s[1024],a;
int result[26]={0},i=0,temp,j;
printf("Enter a string.\n");
scanf("%s",s);
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z')
result[s[i]-'a']++;
}
for(i=0;i<=25;i++)
{
for(j=0;j<=25;j++)
{
if(s[j]>='a'&&s[j]<='z')
{
if(result[j]<result[j+1])
{
temp=result[j];
result[j]=result[j+1];
result[j+1]=temp;
a=s[j];
s[j]=s[j+1];
s[j+1]=a;
}
}

}

}
for (i=0;i<26;i++)
{
if (result[i]>0)
{
printf("%c",'a'+i);
printf("%d",result[i]);
}
}

}
我觉得好难,有没有大神看一下,我这个是否正确,这个代码没报错,但输入数据后 就 锁死了,光标停在那里不停地闪,也没输出,也没终止。
a=s[j];
s[j]=s[j+1];
s[j+1]=a; 我觉得肯定是错的,再补充一个问题 怎么降序输出。
展开
 我来答
匿名用户
2016-12-01
展开全部

while循环中,i 要加1


~




追问
谢,但输出有问题。如何降序输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2018359
2016-12-01 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1393万
展开全部
你在while循环中判断条件是s[i] ,是依靠i变化来判断, 但是是循环体中, 又有for循环又改变了i的值了.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式