C语言问题,求大神帮助解决,最好基于我自己写的程序

【问题描述】编写程序从标准输入中读入一段英文,统计其中小写字母出现次数,并以柱状图的形式显示其出现次数。【输入形式】在标准输入上输入一段英文文章(可能有一行,也可能有多行... 【问题描述】编写程序从标准输入中读入一段英文,统计其中小写字母出现次数,并以柱状图的形式显示其出现次数。【输入形式】在标准输入上输入一段英文文章(可能有一行,也可能有多行),在新的一行的开头输入ctrl+z键表示结束。【输出形式】在屏幕上依次输出表示每个小写字母出现次数的柱状图(以“*”字符表示柱状图,空白处用空格字符表示,某个小写字母出现多少次,就显示多少“*”字符;柱状图的高度以出现最多的字母次数为准),在最后一行依次输出26个小写字母。【样例输入】The computing world has undergone a revolution since the publication ofThe C Programming Language in 1978.【样例说明】在输入的英文短文中,小写字母a出现了6次,所以其上输出了6个字符"*"。出现次数最多的是字母n,所以柱状图的高度为9个字符。字母j没有出现,所以其上都为空格字符。

#include<stdio.h>
#include<string.h>
int main()
{
char c,a[1024];
int max,i=0,j=0;
int b[26]={0};
while(c=getchar()!=EOF){
if(c>='a'&&c<='z'){
a[i]=c;
i++;
}
}
a[i]='\0';
i=0;
c='a';
while(j<26){ //b数组储存二十六个字母出现的次数
if(a[i]==c){
b[j]=b[j]+1;
i++;
}
else if(a[i]=='\0')
i=0,j++,c++;
else
i++;
}
i=0,j=1;
while(j<26){ //判断数量最多的字母
if(b[i]>b[j])
j++;
else{
i=j;
j++;
}
max=b[i];
}
i=0,j=0;
while(j<26){
if(b[i]==max){
printf("*");
b[i]-=1;
}
else
printf(" ");
i++;
if(i==26){
printf("\n");
i=0;
j++;
}
}
printf("abcdefghijklmnopqrstuvwxyz\n");
return 0;
}
展开
 我来答
never715
2013-11-02 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:465万
展开全部
思路:先依次统计a到z字母出现的次数。然后申请一个二维数组,第一维以出现字母次数最多的数申请,第二维为26,然后按照规律以*或者空格填充这个数组。最后输出整个数组,最后输出a到z字母。
追问
大神拜托看一下我的程序哪里出错了
追答

你这要输入到什么时候?改一下:while((c=getchar()) != '\n')

顺便附上我的:看附件

结果:


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流星不死
2013-11-02 · TA获得超过1662个赞
知道小有建树答主
回答量:1621
采纳率:0%
帮助的人:1320万
展开全部
只会自己编写。。
#include<stdio.h>
main()
{
char a[100];
int b[26]={0};
char c[10][26];
int i,j;
gets(a);
for(i=0;i<10;i++)
for(j=0;j<26;j++)
c[i][j]=' ';
for(i=0;a[i]!='\0';i++)
b[a[i]-'a']++;
for(j=0;j<26;j++)
for(i=0;i<=b[j];i++)
c[10-i][j]='*';
for(i=0;i<10;i++)
{
for(j=0;j<26;j++)
printf("%c",c[i][j]);
printf("\n");
}
printf("abcdefghijklmnopqrstuvwxyz\n");
}
追问
你这个不对的。。。。。。跟题要求不一样。。而且输出的东西也不对。。
追答
这是思路阿 大致算法都差不多  输入和输出改改不就行了 我相信你写出这么长的程序也不是一点都不会吧..........
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗流L
2013-11-02 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:51.3万
展开全部
你想问什么
追问
我想问我的程序哪里出问题了
追答
int input(int count[])     \\统计输入的各字符个数
{
char c;
int max=0;
while((c=getchar())!='\n')
{
count[c-'a']++;
if(count[c-'a']>max)
{
max=count[c-'a'];
}
}
return max;
}
void display(int max,int count[]) \\输出条形图
{
int i,j;
for(i=max;i>0;i--)
{
for(j=0;j=i)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
printf("abcdefghijklmnopqrstuvwxyz\n");
}
void main()
{
int count[26]={0};
int max=0;
max=input(count);
display(max,count);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式