*对输入的行、单词和字符进行计数。我们将单词的定义进行化简,认为单词是不包含空格、制表符\t及换行符的字符序列。例如:“a+b+c”,认为是1个单词,它由5个字符组成。又如:“xy abc”,为2个单词,6个字符。输入ctrl+z结束(提示:用ch!=EOF或ch!=-1作为循环条件)。 **输出格式要求:"Lines=%d\nWords=%d\nChars=%d\n"
时间: 2024-03-24 07:41:11 浏览: 106
以下是实现上述功能的C程序:
```c
#include <stdio.h>
int main() {
int lines = 0, words = 0, chars = 0;
char ch;
while ((ch = getchar()) != EOF) {
chars++; // 每读入一个字符,计数器加1
if (ch == '\n') {
lines++; // 每读入一个换行符,计数器加1
}
if (ch == ' ' || ch == '\t' || ch == '\n') {
continue; // 遇到空格、制表符或换行符,跳过
}
if (words == 0) {
words++; // 开始一个新单词,计数器加1
}
while ((ch = getchar()) != EOF) {
chars++; // 每读入一个字符,计数器加1
if (ch == ' ' || ch == '\t' || ch == '\n') {
words++; // 遇到空格、制表符或换行符,单词计数器加1
break;
}
}
}
printf("Lines=%d\nWords=%d\nChars=%d\n", lines, words, chars);
return 0;
}
```
程序通过读入字符逐一计数,遇到换行符时行数计数器加1,遇到空格、制表符或换行符时跳过,遇到非空格、制表符或换行符的字符时,开始一个新单词,单词计数器加1,然后继续读取,直到遇到空格、制表符或换行符为止,当前单词结束,单词计数器加1。最后输出行数、单词数和字符数。
阅读全文