zoukankan      html  css  js  c++  java
  • 题目-统计一行文本的单词个数

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

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

    输入格式

    输入给出一行字符。

    输出格式

    在一行中输出单词个数。

    输入样例

    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 }
    (二)边输入边统计
  • 相关阅读:
    txtbox取Calendar值
    【Spread Sheet 应用(一)】去掉原有功能键及添加功能键
    【SQLSERVER】存储过程基础
    【SQLSERVER】在存储过程中调用存储过程
    ASP.NET跨页面传值技巧(VB.NET篇)
    【EXCEL】IF...ELSE语句
    VB单元测试
    【VB.NET】窗体之间传值
    【Spread Sheet 应用(二)】常用属性设置
    【SQLSERCER】创建、改变、删除索引
  • 原文地址:https://www.cnblogs.com/yuanchuying/p/14752809.html
Copyright © 2011-2022 走看看