C primer plus 第六版 第八章 第四题 编程练习答案

时间:2021-10-16 14:38:58

Github 地址:这里这里φ(>ω<*)

/*

   本程序应题目而建立。
       题目要求: 遇到EOF之前,将输入作为字符流读取。
                 该程序要求报告平均每个单词的字母数。
注: 该程序有瑕疵。。瑕疵于会把一个以空字符相隔的标点符号理解为一个单词结束而技术单词数量。
*/


#include<stdio.h>
#include<ctype.h>


int main(void)
{
int r_d = 0;       //Read & Deal  处理读取用。
int latter = 0;    //保存 字母 数量。
int word = 0;      //保存 单词 数量。


float a_v = 0;     //Average Value 平均值。


while ((r_d = getchar()) != EOF)
{
if (isalpha(r_d))
{
//在当前字符为 字母 的情况下。字母数量自增。
latter++;
}
else if (isspace(r_d))
{
//在当前字符为 空白字符 的情况下,默认为一个单词的结束。故 单词数量自增。


word++;
}
else
{
//其他情况下则直接进入循环,读取下一个单词。
continue;
}
}


a_v = (float)latter / word;  // 求平均值。

printf("Over ! 现有 %d 个单词 与 %d 个字母。\n", word, latter);
printf("平均每个单词有 %f 个字母。\n", a_v);
printf("Bye !\n");


getchar();


return 0;
  }