输入一行字符,统计其中有多少个单词,单词之间是用空格分隔开。c语言
时间: 2023-12-26 07:26:53 浏览: 61
以下是C语言统计一行字符中单词个数的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main() {
int c, state = OUT, count = 0;
printf("请输入一行字符,单词之间用一个空格分隔开\n");
while ((c = getchar()) != EOF) {
if (isspace(c)) {
state = OUT;
} else if (state == OUT) {
state = IN;
count++;
}
}
printf("该行字符有%d个单词\n", count);
return 0;
}
```
代码思路:
1. 定义两个常量IN和OUT,分别表示在单词内和单词外。
2. 定义变量c、state和count,其中c表示当前读入的字符,state表示当前状态,count表示单词个数。
3. 读入字符,如果是空格、制表符或换行符,则将状态设置为OUT。
4. 如果不是空格、制表符或换行符,且当前状态为OUT,则将状态设置为IN,并将单词个数加1。
5. 重复步骤3和4,直到读入EOF。
相关问题
输入一行字符,统计其中有多少个单词,单词之间是用空格分隔开C语言
以下是C语言统计一行字符中单词个数的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main() {
int c, state = OUT, count = 0;
printf("请输入一行字符,单词之间用一个空格分隔开\n");
while ((c = getchar()) != EOF) {
if (isspace(c)) {
state = OUT;
} else if (state == OUT) {
state = IN;
count++;
}
}
printf("该行字符有%d个单词\n", count);
return 0;
}
```
代码解释:
- `#include <stdio.h>`和`#include <ctype.h>`是C语言的头文件,分别包含了输入输出和字符处理函数。
- `#define IN 1`和`#define OUT 0`是宏定义,用于表示单词的状态,IN表示在单词内,OUT表示在单词外。
- `int c, state = OUT, count = 0;`定义了三个变量,`c`表示当前读入的字符,`state`表示当前所处的状态,`count`表示单词的个数。
- `while ((c = getchar()) != EOF)`是一个循环,每次读入一个字符,直到读到文件结尾。
- `if (isspace(c))`判断当前字符是否为空格,如果是,将状态设置为OUT。
- `else if (state == OUT)`判断当前状态是否为OUT,如果是,将状态设置为IN,并将单词个数加1。
- `printf("该行字符有%d个单词\n", count);`输出单词的个数。
用C语言编写输入一行字符,统计其中有多少个单词,单词之间是用空格分隔开
以下是用C语言编写输入一行字符,统计其中有多少个单词的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main()
{
int c, state, count;
state = OUT;
count = 0;
while ((c = getchar()) != EOF)
{
if (isspace(c))
{
state = OUT;
}
else if (state == OUT)
{
state = IN;
++count;
}
}
printf("单词数为:%d\n", count);
return 0;
}
```
代码说明:
1. 定义了两个常量IN和OUT,分别表示单词内和单词外的状态。
2. 定义了三个变量c、state和count,其中c表示当前读入的字符,state表示当前状态,count表示单词数。
3. 初始化state为OUT,count为0。
4. 读入字符,如果是空格、制表符或换行符,则将state设置为OUT。
5. 如果不是空格、制表符或换行符,并且state为OUT,则将state设置为IN,并将count加1。
6. 循环读入字符,直到读到文件结尾。
7. 输出单词数。