题目-统计一行文本的单词个数

题目-统计一行文本的单词个数

编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式

输入给出一行字符。

输出格式

在一行中输出单词个数。

输入样例

Let's go to room 209.

输出样例

5

具体分析和代码

方法一:字符数组

cin.get()函数:把从键盘上输入的每一个字符,包括空格符和回车符等分隔符都作为一个输入字符赋给字符型变量。

采用字符数组 s[ ] 接收全部的输入字符,再对该字符数组进行统计。

从第一个输入字符开始扫描,当扫描到第一个非空字符时,可认为输入行中至少有一个单词,赋值 count = 1;

从第一个非空字符开始统计,若空格后紧接着非空字符时,代表后面还有单词,count+1

 1 //输入完毕后再统计  
 2 #include<iostream>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     char s[1000];    //接收字符的数组  
 8     int i=0, count(0); //i为输入的字符总数(包含空格),count用于计数 
 9     cin.get(s[i]);
10     while(s[i]!='
'){
11         i++;
12         cin.get(s[i]);
13     }
14     //cout << i << endl; 检验 
15     int t = 0; //t用于记录第一个非空字符的位置下标  
16     for(int j=0; j<=i; j++)
17     {
18         //cout<<s[j];
19         if(s[j]>='a'&&s[j]<='z' || s[j]>='A'&&s[j]<='Z' || s[j]>='0'&&s[j]<='9'){
20             count = 1;
21             t = j;
22             break;
23         }
24     }
25     //cout << t << endl;检验 
26     for(int j=t; j<i; j++)
27     { //当空格后接非空字符时,单词数+1  
28         if(s[j]==' ' && s[j+1]!=' '){
29             count++;
30         }
31     }
32     cout << count << endl;     
33     
34     return 0;
35 }
(一)字符数组

方法二:一边输入字符一边统计单词

一个单词开始 = 输入非空字符;一个单词结束 = 输入空格或者换行符

从输入第一个字符开始,分情况讨论下一步:

  (1)是换行符,输入结束,退出循环;

  (2)是空格,继续,直到输入非空字符;

  (3)是非空字符,即为单词开始,统计值 count++,进入单词输入子循环,继续输入字符,直到输入空格或换行符时,即输完一个单词;

 1 //边输入边统计,输入完即得出统计结果  
 2 #include <iostream>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     char a;
 8     int count=0;
 9  
10       while(1){
11           cin.get(a);
12         if(a=='
'){ //输入回车代表结束循环,得出结果  
13             break;
14         }
15         else if(a!=' ')
16         { //  不为空格且满足下面条件的就为一个单词开始  
17             if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')    {
18                 count++;   
19             }
20             while(1){
21                 cin.get(a);
22                 if(a==' '||a=='
'){ //读到空格或者回车代表这个单词输入完毕  
23                     break;
24                 }
25             }
26             if(a=='
'){
27                 break;//换行符是一行输入结束的标志  
28             }
29         } 
30     }
31  
32       cout << count;
33     return 0;
34 }
(二)边输入边统计
原文地址:https://www.cnblogs.com/yuanchuying/p/14752809.html