| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1302 人关注过本帖
标题:垂直直方图
只看楼主 加入收藏
ll1512121699
Rank: 1
来 自:成都
等 级:新手上路
帖 子:27
专家分:2
注 册:2013-3-21
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:4 
垂直直方图
#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,sum[26],max;
    char str[200];
    for(i=0;i<4;i++)
    {
        gets(str);
        j=0;
        while(str[j])
        {
        if(str[j]>='A'&&str[j]<='Z')
            sum[str[j++]-'A']++;
        j++;
        }
    }
        max=0;
        for(i=0;i<26;i++)
            if(sum[i]>max)
                max=sum[i];
            for(i=0;i<26;i++)
            {
                for(j=0;j<max;j++)
                {
                    printf(" ");
                }
            }
            for(i=max;i>0;i--)
            {
                for(j=0;j<26;j++)
                {
                if(sum[j]=i)
                    printf("*");
                }
            }
            printf("\n");
            printf("A");
            for(i=1;i<26;i++)
                printf("%c%c",' ','A'+i);
            printf("\n");
            return 0;
}
            
为什么我的这个程序只能输出大写字母,不能输出直方图呢?谁能帮我看看错在哪里了?辛苦了。谢谢!
搜索更多相关主题的帖子: max include 直方图 
2013-05-13 22:22
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
收藏
得分:7 
while(str[j])
        {
        if(str[j]>='A'&&str[j]<='Z')
            sum[str[j++]-'A']++;
        j++;
        }

只看到这里..
假设str[j] == 'A'
sum[0]++; 这句是要干啥? 我猜是你想给sum[0]赋值..但是这是让sum[0]的值自加..但sum[0]还没初始化

下面的j++多余了,因为上面j已经自加了

[ 本帖最后由 Ryker 于 2013-5-13 23:04 编辑 ]
2013-05-13 23:02
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:7 
#include<stdio.h>
int main()
{
    int i,j,sum[26]={0},max;
    char str[200];
    for(i=0;i<4;i++)
    {
        gets(str);
        j=0;
        for(j=0;str[j]!='\0';j++)
           if(str[j]>='A'&&str[j]<='Z')
               sum[str[j]-'A']++;
    }
    max=0;
    for(i=0;i<26;i++)
      if(sum[i]>max)
           max=sum[i];
    while(max>0)
    {
       for(i=0;i<26;i++)
         if(sum[i]>=max)
            printf("*");
         else
            printf(" ");
       printf("\n");
       max--;
    }
    for(i=0;i<26;i++)
       printf("%c",'A'+i);
    printf("\n");
    return 0;
}
稍微改造了一下,供参考
2013-05-13 23:10
ll1512121699
Rank: 1
来 自:成都
等 级:新手上路
帖 子:27
专家分:2
注 册:2013-3-21
收藏
得分:0 
sum[str[j]-'A']++;
这一行可以实现每个字母的自加吗?能解释的清楚些吗?

坚持!永远坚持……
2013-05-15 21:27
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:7 
int i,j,sum[26]={0},max;
因为你的sum数组没有初始化,所以没有预想结果

Maybe
2013-05-15 21:49
快速回复:垂直直方图
数据加载中...
 
   



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

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