c语言中,输入n行字符,统计其中有多少个单词,单词之间用空格分隔开?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中,输入n行字符,统计其中有多少个单词,单词之间用空格分隔开?相关的知识,希望对你有一定的参考价值。

把程序编写出来

代码文本:

#include "stdio.h"

int main(int argc,char *argv[])

char s[300];

int i,k,w;

printf("Please enter a string...\\n");

fgets(s,300,stdin);

for(w=i=0;s[i];i++)

if(s[i-1]==' ' && (k=s[i]|0x20)>='a' && k<='z' || i==0)

w++;

printf("%d\\n",w);

return 0;

参考技术A 用数组存储输入的字符,由于有n行,就定义多维数组,然后通过不断读取单词,但遇到空格,则计数加1,最后遇到'\0'字符,再加1即可得到单词数。追问

可以把程序编写出来吗😁

本回答被提问者采纳
参考技术B 这类统计的解决办法是:扫描输入的字符流,把字符分为单词符号、单词分隔符号两类,设置一个状态标志,初始化状态标志为单词分隔符状态,当遇到与状态不同的输入时候改变一下状态,在从分隔符状态改变为单词符号状态时扫描的单词数量+1,这样在多个分隔符连续出现时不会造成统计结果的错误增加。
一般单词符号为字母和连字符,其它符号作为分隔符,也可以按照题目要求的只把空白(空格、制表、回车、换行)作为分隔符。
程序代码如下(没有联机调试,如果遇到小的语法问题可以追问):
#include<stdio.h>
main()

int words=0,flag=0;
char c;
while((c=getchar())!=EOF)/*表示一直读取字符,直到输入结束,UNIX是CTRL+D,DOS系统是CTRL+Z,不同的编译环境这个判断可以需要修改*/

if (c==32 || c==9 || c==10 || c==13)



if (flag==1) flag=0;



else



if (flag==0)flag=1;words++;




printf("%d words inputed.\n", words);

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

提供一个思路。
首先你需要判断什么样的情况属于单词。
1.两个空格之间的不间断的字母可以看做一个单词。
2.这个字母可以任意长。(只要比句子短就可以)
如果想省事的话,可以设置3个指针:
phead
pword
首先这2个指针都指向句子的首部。
1.遇到第一个空格,且空格后为字母,phead停住,指向这个空格。然后pword继续走。
2.如果pword一直都是遇到字母,则当它的下一个字符为空格或者结束符时,单词数目加1.同时,phead等于pword,继续寻找下边的字符串。
这样一直循环到字符串结束。
参考技术A #include
"stdio.h"
main()

int
i,sum=0,s=0;
char
str[100];
printf("请输入一些字符,之间用空格隔开,然后按回车键:\n");
gets(str);
for(i=0;str[i];i++)

if(str[i]=='
')

if(s)
sum++;
s=0;

else
s=1;

printf("共有单词
:
%d

\n",sum);

以上是关于c语言中,输入n行字符,统计其中有多少个单词,单词之间用空格分隔开?的主要内容,如果未能解决你的问题,请参考以下文章

C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

C语言,输入一行英文字母,统计其中有多少个单词,单词之间用空格分隔.

输入一个字符串,统计其中包含的单词个数,假设单词与单词之间用空格分隔。

输入一个字符串,统计其中单词的个数