| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 403 人关注过本帖
标题:打印输入中各个字符出现的频率,结果存在bug
只看楼主 加入收藏
日寂
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2013-11-1
结帖率:81.82%
收藏
已结贴  问题点数:5 回复次数:1 
打印输入中各个字符出现的频率,结果存在bug
程序代码:
//问题:输出结果中,直方图按照由小到大排列,不论所对应的字符类别原本频率
#include<stdio.h>
int max(int x,int y)
{
    int z;
    z=(x>y)?x:y;
    return (z);
}
int main()
{
    char input[100];
    int i,top;
    int letter,space,number,other;//分别用以存放字母数、空格数、数字数及其它字符数
    letter=space=number=other=0;
    printf("请输入一段字符:\n");
    gets(input);//输入一段字符
    for(i=0;input[i]!='\0';i++)//计算各类字符的数量
    {
        if(input[i]>='0' && input[i]<='9') number++;
        else if((input[i]>='a' && input[i]<='z')||(input[i]>='A' && input[i]<='Z')) letter++;
        else if(input[i]==' ') space++;
        else other++;
    }
    top=max(other,max(number,max(space,letter)));
    printf("以下为输入中各字符出现频率的直方图:\n");
    for(;top>0;top--)
    {
        printf("%-4d",top);
        if(letter>=top) printf("*\t");
        if(space>=top) printf("*\t");
        if(number>=top) printf("*\t");
        if(other>=top) printf("*\t");
        putchar(10);
    }
    printf("    L\tS\tN\tO\n");
    return 0;
}


[ 本帖最后由 日寂 于 2014-1-22 21:18 编辑 ]
搜索更多相关主题的帖子: 直方图 letter return number include 
2014-01-22 21:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
程序代码:
#include<stdio.h>
int max(int x,int y)
{
    return (x>y)?x:y;
}
int main()
{
    char input[100];
    int i,top;
    int letter,space,number,other;//分别用以存放字母数、空格数、数字数及其它字符数
    letter=space=number=other=0;
    printf("请输入一段字符:\n");
    gets(input);//输入一段字符
    for(i=0;input[i]!='\0';i++)//计算各类字符的数量
    {
        if(input[i]>='0' && input[i]<='9') number++;
        else if((input[i]>='a' && input[i]<='z')||(input[i]>='A' && input[i]<='Z')) letter++;
        else if(input[i]==' ') space++;
        else other++;
    }
    printf("字母%d个\n",letter);
    printf("数字%d个\n",number);
    printf("空格%d个\n",space);
    printf("其它%d个\n",other);
    //return 0;
    top=max(other,max(number,max(space,letter)));
    printf("以下为输入中各字符出现频率的直方图:\n");
    for(;top>0;top--)
    {
        printf("%-4d",top);
        if(letter>=top && space>=top && number>=top && other>=top) printf("*\t*\t*\t*\t");
        else if(letter>=top && space>=top && number>=top) printf("*\t*\t*\t");
        else if(letter>=top && space>=top && other>=top) printf("*\t*\t\t*\t");
        else if(letter>=top && number>=top && other>=top) printf("*\t\t*\t*\t");
        else if(space>=top && number>=top && other>=top) printf("\t*\t*\t*\t");
        else if(letter>=top && space>=top ) printf("*\t*\t\t\t");
        else if(letter>=top && number>=top ) printf("*\t\t*\t\t");
        else if(space>=top && number>=top ) printf("\t*\t*\t\t");
        else if(letter>=top && other>=top) printf("*\t\t\t*\t");
        else if(space>=top && other>=top) printf("\t*\t\t*\t");
        else if(number>=top && other>=top) printf("\t\t*\t*\t");
        else if(letter>=top) printf("*\t\t\t");
        else if(space>=top)  printf("\t*\t\t\t");
        else if(number>=top) printf("\t\t*\t\t");
        else if(other>=top)  printf("\t\t\t*\t");
        putchar(10);
    }
    printf("    L\tS\tN\tO\n");
    return 0;
}


也没想到啥好方法  期待大神的简易代码

DO IT YOURSELF !
2014-01-23 11:33
快速回复:打印输入中各个字符出现的频率,结果存在bug
数据加载中...
 
   



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

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