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

把程序编写出来
2025-03-18 11:00:31
推荐回答(3个)
回答1:

代码文本:

#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;

}

回答2:

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

回答3:

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