蓝桥练习 之 单词个数统计

问题描述
  编写一个程序,输入一个字符串(长度不超过80),然后统计出该字符串当中包含有多少个单词。例如:字符串“this is a book”当中包含有4个单词。
  输入格式:输入一个字符串,由若干个单词组成,单词之间用一个空格隔开。
  输出格式:输出一个整数,即单词的个数。
  输入输出样例
  用户输入数据样例:
  this is a book
  系统输出数据如下:
  4
 
 
这个题并不难,但是它涉及了一个非常小的知识点,这个需要我自己去记忆。
 
首先分析一下,依照题目要求,输入一个字符串,然后得出对应的单词数,判断条件,当遇到空格时,单词数目加一,如何判断空格,这时可以利用ASCII码,那么关键是如何只输入一个字符串,然后自动忽略空格呢?
 
下面我们来看看用C++语言来实现单词输入:
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     string b;
 8     int i,j=1,k,a;
 9     getline(cin,b);
10     k=b.size();
11     for(i=0;i<k;i++)
12     {
13         a=b[i]-' ';
14         if(a==0)
15         {
16             j++;
17         }
18     }
19     cout<<j<<endl;
20     system("pause");
21     return 0;
22 }

蓝桥杯练习系统通过。

getline(cin,b);

这里是以它来实现的。


接下来就以Java语言来实现单词个数统计:
 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     
 5      public static void main(String[] args) {
 6          Scanner sc = new Scanner(System.in);
 7         // int n =sc.nextInt();
 8          String b =sc.nextLine();
 9          int k = b.length();
10          int i,s=1;
11          
12          for(i=0;i<k;i++)
13          {
14              String str=b.substring(i,i+1);
15              if(str.equals(" "))
16              {
17                  s++;
18              }
19          }
20          
21          System.out.println(s);
22         
23      }
24     
25 }
 
  

蓝桥杯练习系统通过,100分。

因为我刚开始学习java,还不算太熟悉,所用到的一些一些方法完全是以C++的思维,但是在写这道题的时候,我在这几个小点上犯了错:

1,

String b =sc.nextLine();

这个语句是输入字符串的,它包含输入空格,它的分隔符就是回车,所以在考虑单词空格时,不需要担心后来的不算入进去;

2,在截取字符串获得单个的时候,容易将字符串与字符进行比较,这显然是错误的。

 

同种题型,在PAT上也有,链接:https://www.patest.cn/contests/pat-b-practise/1009

这个题则是以反过来输入为主,方法很多,下面就把这个题以及最后我的检测结果给放出来:

 

就是这个题目,它的大致思路和蓝桥杯上的差不多。详见代码:

 

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     string b;
 8     getline(cin,b);
 9     int i,j,k=0,p,q;
10     k=b.size();
11     i=k-1;    //字符串最大脚标 
12     
13     for(;i>=0;)
14     {
15         p=i;
16         for(;p>=0;p--)
17         {
18             if(b[p] == ' ')
19             {
20                 for(j=p+1;j<=i;j++)          //除第一个单词以外的单词输出,注意脚标 
21                 {
22                     cout<<b[j];
23                 }
24                 cout<<" ";
25                 break;
26             }
27             if(p==0)
28             {
29                 for(j=0;j<=i;j++)        //输出最后的一个字符,即输入的第一个字符 
30                 {
31                     cout<<b[j];
32                 }
33             }
34         }
35         i=p-1;                          //减去空格 
36     }
37     return 0;
38 }

 

结果测试显示:

测试点全部通过,蛮开心的!

 

小结:

          输入输出要注意它的格式,以及空格的存在,整体思路不难,主要存在的问题就是那一个小点。

 

 

 

 

 

 

 





  

转载于:https://www.cnblogs.com/zxcjj/articles/5334323.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值