C程序设计语言课后练习1.6.1

本文介绍了一个使用C语言编写的单词计数器程序。该程序能够读取文本输入,并统计不同长度单词的数量,同时使用星号显示统计结果,对于长度超过预设最大值的单词进行特殊处理。
#include <stdio.h>
#define MAXWORD 15
#define IN 1
#define OUT 0
int main()
{
	int c;
	int i=0,len=0,nc=0;//NC用于记录单词的长度。
	int wordlength[MAXWORD]={0};//将输入的单词长度记录在此数组中
	int state=OUT; //用于记录是不是一个新单词
	int value=0;//用于读取wordlength[WORDMAX]中的值
	int overflow=0;//记录单词长度大于MAXWORD的次数
	int num=0;
	

	while ( ( c=getchar() ) != EOF ){
		if( c == ' ' || c == '\t' || c == '\n'){
			state = OUT;
			if( nc > 0 && nc < MAXWORD) {
				wordlength[nc]++;
				nc = 0;
			}
			else if( nc >= MAXWORD) {
				overflow++;
				nc = 0;
			}
		}
		else if ( state = OUT){
				nc++;
				state = IN;
				}
			else{
			state = IN;
			nc++;
		}
	};

	/* for( i = 1 ; i < MAXWORD ; i++){
		printf("长度为%5d的单词 - %5d个\n",i,wordlength[i]);
	}; */

	for( i = 1 ; i < MAXWORD ; i++){
		printf("%2d - %3d : ",i,wordlength[i]);
		if( wordlength[i] > 0){
			int k = 0;
			for( k = 0; k< wordlength[i] ; k++){
			putchar('*');
			}
		}
		 putchar('\n');
	};
	if( overflow > 0)
	printf("There are %d wordS overflow",overflow);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值