|
5鱼币
- //统计字符、单词和行
- #include <stdio.h>
- #include <ctype.h> //为isspace()提供函数原型
- #include <stdbool.h> //为bool、true和false提供定义
- #define STOP '|'
- int main(void)
- {
- char c; //读入字符
- char prev; //前一个读入字符
- long n_chars = 0L; //字符数
- int n_lines = 0; //行数
- int n_words = 0; //单词数
- int p_lines = 0; //不完整的行数
- bool inword = false; //如果c在一个单词中, 则inword等于true
- printf("enter text to be analyzed(| to terminate): \n");
- prev = '\n'; //用于识别完整的行
- while((c = getchar()) != STOP)
- {
- n_chars++; //统计字符
- if(c == '\n')
- n_lines++; //统计行
- if(!isspace(c) && !inword)
- {
- inword = true; //开始一个新单词
- n_words++; //统计单词
- }
- if(isspace(c) && inword)
- inword = false; //到达单词的尾部
- prev = c; //保存字符值
- }
- if(prev != '\n')
- p_lines = 1;
- printf("characters = %ld, words = %d, lines = %d, ",
- n_chars, n_words, n_lines);
- printf("partial lines = %d\n", p_lines);
- getchar();
- getchar();
- return 0;
- }
复制代码
|
最佳答案
查看完整内容
while((c = getchar()) != STOP)
{
n_chars++; //统计字符
if(c == '\n')
n_lines++; // 遇到换行符'\n',行数就+1
if(!isspace(c) && !inword)
{ // 如果输入的字符c不是空白字符,且不在前面的单词中,说明字符c是新一个单词的首字母
inwo ...
|