今天属于1
#include "stdio.h"main(){ char s[81],c; int i,num=0,word=0; printf("请输入一行英文:\n"); gets(s); for(i=0;(c=s[i])!='\0';i++) /*依次读取字符,直到遇到空字符结束*/ if(c==' ') word=0; /* 若读取的字符为空则给WORD赋值0*/ else if(word==0) /* 当空格后读取字符不为空时给word赋值1并且NUM加一*/ { word=1; num++; } printf("%d\n",num);}
了了大哥
#include "stdio.h"main(){ char s[81],c; int i,num=0,word=0; printf("请输入一行英文:\n"); gets(s); for(i=0;(c=s[i])!='\0';i++)//判断句子是否到未 if(c==' ') word=0;//是空格就为0 else if(word==0)//不是空格就判断之前有没有空格 { word=1;//复位用来判断空格是否存在的开关 num++;//如果之前有空格,单词数加1 } printf("本行中共有%d个单词.\n",num);}其原理很简单:对每个字符进行判断,如果是空格就把变量word标记为0,如果不是空格就判断word是不是0(即判断之前有没有空格),如果存在空格单词量加1,然后复位word变量为0。就这样重复,知道句子结束请采纳答案,支持我一下。
youjinjuan
#include
37856552ah
#include
假装不在上海
//通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);#include
示例:输入语句: Hello ! My friend , how are you ? (注意单词的前后有空格)
h e l l o 空格 w o r l d
0 1 2 3 4 5 6 7 8 9 10
结果如下:
小豆子就是我
根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。
不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。
一、算法设计:
核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。
1、flag初始为1;
2、遍历字符串。
3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。
4、在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。
5、 遍历结束后输出结果。
二、参考代码: