pta L1-059 敲笨钟

相当难搞的模拟题,虽然在一定是简单字符串模拟题,但是处理起来也是有些棘手的;

题目思路:按照题目要求模拟,需要注意的是,如何处理“ong"所在的字符串,即找到','与’.'所在的位置,往前推进,如果满足这些条件

则在从末尾寻找三个空格之前的地方,从头输出之后,在输出” qiao ben zhong“,注意,要多输出一个空格,因为找到第三个空格就停止了,所以要把那个空格补上;

如不满足条件,就按照题目要求输出即可,

细节很多,干货满满,应该好好把握这类字符串模拟题;

Talk is cheap. Show me the code.

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     cin >> n;
 7     getchar();//高手和菜鸡的区别就是识别空格--zju chenyue 
 8     for (register int i = 1; i <= n; i++)
 9     {
10         string s=""; 
11         int flag=0;//统计满足条件否 
12         getline(cin, s);//输入 
13         for (register int j = 0; j < s.length(); j++)
14         {
15             if (s[j]==',')//','找到','往前推进 
16             {
17                 if (s[j-1]=='g')
18                 if (s[j-2]=='n') 
19                 if (s[j-3]=='o')
20                 flag++;
21             }
22             if (s[j] == '.')//同上 
23             {
24                 if (s[j-1]=='g')
25                 if (s[j-2]=='n')
26                 if (s[j-3]=='o')
27                 flag++;
28             }
29         }
30             if (flag==2)//满足条件 
31             {
32                 int cnt=0;
33                 int k=0;
34                 for ( k = s.length() - 1; k >= 0; k--)//往前推进三个空格 
35                 {
36                     if (s[k] == ' ')
37                         cnt++;
38                     if (cnt == 3)//终止 
39                         break;
40                 }
41                 for (register int l = 0; l < k; l++)//从头开始输出 
42                 {
43                     cout << s[l];
44                 }
45                 cout << " qiao ben zhong.";
46             }
47             else
48                 cout << "Skipped";
49                 if(i<n)//格式控制 
50                 cout<<endl;
51             }
52     return 0;
53 }

 

posted @ 2022-04-18 14:34  江上舟摇  阅读(132)  评论(0)    收藏  举报