练习1-13 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。
题目的意思应该为“打印输入中不同长度的单词个数的直方图”。
编译运行前,应将第23行的EOF改为 ‘\n’,否则程序运行时该while循环无法终止。
emmmm更正一下,文件结束符EOF是可以输入的。Windows系统中是在换行符之后按Ctrl+Z输入。在其它一些系统中是按Ctrl+D输入。
//练习1-13 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。
#include <stdio.h>
#define IN 1
#define OUT 0
#define maxlength 10
int main(){
//统计不同长度的单词各有几个
int c,state;
int wordlength; //记录单个单词的长度
int numoflength[maxlength]; //记录每个长度的单词的个数,记录的长度范围为1~10
int numofother; //记录长度超过10的单词个数
state = OUT;
wordlength = 0;
int a;
for(a=0;a<maxlength;a++){
numoflength[a-1] = 0;
}
numofother = 0;
while((c=getchar())!=EOF){
//EOF应改为'\n'
if(c!=' '&&c!='\n'&&c!='\t'){
state = IN;
++wordlength;
}else if(state == IN){
//一个单词读取结束
state = OUT