频度直方图

来源:互联网 发布:mirrorlink 软件 编辑:程序博客网 时间:2024/06/03 23:47
第一次发。。。最近刚学c
K&R的《the c programming language》上P17 练习 1-13

编写一个程序,打印输入中各个字符出现频度的垂直直方图。


#include<stdio.h>#define IN 1#define OUT 0#include<ctype.h>void countchar(int ar[],int index);void output(int ar[]);int main(void){    int ar[15],index=0,i,j,length;    printf("请输入你的文章:\n");    for(i=0;i<15;i++)    ar[i]=0;    countchar(ar,index);    output(ar);    return 0;}void countchar(int ar[],int index){    char ch;    int state = OUT;    int length=0;    while((ch=getchar()) !=EOF)    {        if (isspace(ch)||ch == ','||ch == '.')        if (state == OUT)        ;        else {            ar[length-1] += 1;            length = 0;            state = OUT;        }        else {            length++;            state = IN;        }    }}void output(int ar[]){    int i,j;    printf("个^\n数|\n");    for(i=15;i>0;i--)    {        printf("%2d|",i);        for(j=0;j<15;j++)        {            if (ar[j]>=i)            printf("#");            else printf(" ");            printf("  ");        }        printf("\n");    }    printf(" 0 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  ->\n");    printf("   1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 字母\n");}


0 0