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; 我觉得肯定是错的,再补充一个问题 怎么降序输出。 展开
输出; 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; 我觉得肯定是错的,再补充一个问题 怎么降序输出。 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询