编写一个程序,对用户输入的字符流(以Ctrl+Z结束)中的行、单词和字符个数进行统计
时间: 2024-05-02 19:18:19 浏览: 17
```
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int lines = 0, words = 0, chars = 0;
int in_word = 0;
char c;
while ((c = getchar()) != EOF) {
++chars;
if (isspace(c)) {
in_word = 0;
if (c == '\n')
++lines;
} else {
if (!in_word) {
in_word = 1;
++words;
}
}
}
printf("Lines: %d\n", lines);
printf("Words: %d\n", words);
printf("Chars: %d\n", chars);
return 0;
}
```
该程序使用了一个 `in_word` 变量来记录当前是否在一个单词中,从而可以统计单词数。在遇到空白字符时,如果 `in_word` 为真,则说明当前单词已经结束,将其清零;如果遇到换行符,则说明当前行已经结束,将行数加一。最后,输出行、单词和字符数的统计结果。
相关问题
请使用C++编写一个程序,输入一个字符串,统计其单词个数及字母个数
以下是使用C++编写的程序,可以输入一个字符串,统计其单词个数及字母个数:
```c++
#include <iostream>
using namespace std;
int main() {
string str;
getline(cin, str); // 读入一行字符串
int wordCount = 0; // 单词个数
int letterCount = 0; // 字母个数
bool inWord = false; // 是否在单词中
for (int i = 0; i < str.length(); i++) {
char c = str[i];
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') { // 如果是字母
letterCount++;
if (!inWord) { // 如果不在单词中,说明进入了新单词
wordCount++;
inWord = true;
}
} else { // 如果不是字母
inWord = false; // 不在单词中
}
}
cout << "单词个数:" << wordCount << endl;
cout << "字母个数:" << letterCount << endl;
return 0;
}
```
程序先读入一行字符串,然后遍历字符串中的每个字符。如果当前字符是字母,则累加字母个数,并检查是否进入了新单词。如果当前字符不是字母,则不在单词中。最后输出单词个数和字母个数。
C语言 编写程序,在随机输入的一行字符中统计其中有多少个单词
好的,我可以帮你解决这个问题。以下是一个统计单词数量的C语言程序示例:
```c
#include <stdio.h>
int main() {
char str[100];
int words = 0, i;
printf("请输入一行字符:\n");
fgets(str, 100, stdin);
i = 0;
while (str[i] != '\0') {
// 如果当前字符是字母,则跳过
while (str[i] >= 'a' && str[i]<= 'z' || str[i] >= 'A' && str[i] <= 'Z') {
i++;
}
// 单词数量加一
words++;
// 跳过空格和非字母字符
while (str[i] == ' ' || str[i] == '\n' || str[i] == '\t' || str[i] == '\r') {
i++;
}
}
printf("该行字符包含 %d 个单词。\n", words);
return 0;
}
```
这个程序使用循环遍历输入的字符串,每当遇到一个非字母字符(如空格、换行符、制表符等)时,就将单词数量加一。最后输出统计结果。希望能对你有所帮助!