第一次发。。。最近刚学c
K&R的《the c programming language》上P17 练习 1-13
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");
}