字母频率及直方图c语言,编写一个程序,打印输入中单词长度的直方图

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#define inside 1

#define outside 0

/*编写一个程序,统计并打印输入单词不同长度的个数,并打印输入中单词长度的直方图*/

main ()

{

int test,c,i,j,k;

int tj[10];

test=outside;

for (i=0;i<10;++i)

tj[i]=0;

j=0;

k=0;

while ((c=getchar())!=EOF)

{

if (c<65||c>122)

{

if (test==inside)

++tj[j-1];

test=outside;

j=0;

}

else

{

++j;

test=inside;

}

}

for (i=1;i<11;++i)

{

k=k+tj[i-1];

printf("%d个字母长度的单词有%d个\n",i,tj[i-1]);

}

printf("所有单词总共有%d个\n",k);

/*上面是统计单词数并输出的,下面的代码是打印直方图的*/

/*这里先打印横向直方图*/

printf("\n字母长度\t单词个数");

for (i=1;i<11;++i)

{

printf("\n%2d个字母:",i);

if(tj[i-1]>=1)

{

for (j=1;j<=tj[i-1];j++)

putchar(1);

}

}

/*下面打印竖向直方图*/

int tem;

tem=0;

for (i=1;i<11;++i)

if (tem

tem=tj[i-1]; /*这里是找出数组tj[i]的最大值那个并赋值给tem,用来确定纵坐标的最大值*/

printf("\n\n单词个数(个)\n");

printf(" ");putchar(24); /*此处打印纵坐标开始位置,下面每行扫描打印整个图表*/

for (i=tem;i>0;i--)

{

printf("\n%3d",i);putchar(124);putchar(45); /*这里打印每行图表左边部分,下面开始打每行的柱状图*/

for (j=0;j<10;j++)

{

if (tj[j]>=i)

{

printf(" ");

putchar(1);

}

else

printf(" ");

}

} /*下面开始打印横坐标*/

printf("\n 0");putchar(124);

for (i=1;i<33;++i)

putchar(45);

putchar(26);

printf("单词长度(n个字母/单词)\n");

printf(" ");

for (i=1;i<=10;i++)

printf("%3d",i);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值