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


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

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

    输入格式

    输入给出一行字符。

    输出格式

    在一行中输出单词个数。

    输入样例

    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 }
    (二)边输入边统计
  • 相关阅读:
    java中Object转String
    JSON以及Java转换JSON的方法(前后端常用处理方法)
    JS基础如何理解对象
    图解数据结构(7)——二叉查找树及平衡二叉查找树(一共14篇)
    C++虚函数表解析(图文并茂,非常清楚)( 任何妄图使用父类指针想调用子类中的未覆盖父类的成员函数的行为都会被编译器视为非法)good
    C++中代理类和句柄类
    C++的 RTTI 观念和用途(非常详细)
    川普就是领着一群工业革命时代的棺材瓤子,发动了一次资本主义复辟,面对互联网不过是一次新的砸机器运动
    基于.NET MVC的高性能IOC插件化架构
    雅虎35条
  • 原文地址:https://www.cnblogs.com/yuanchuying/p/14752809.html
Copyright © 2020-2023  润新知