PTA --- 天梯赛 L1-059 敲笨钟
L1-059 敲笨钟 (20 point(s))
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。
现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。
输入格式:
输入首先在第一行给出一个不超过 20 的正整数 N。随后 N 行,每行用汉语拼音给出一句古诗词,分上下两半句,用逗号 , 分隔,句号 . 结尾。相邻两字的拼音之间用一个空格分隔。题目保证每个字的拼音不超过 6 个字符,每行字符的总长度不超过 100,并且下半句诗至少有 3 个字。
输出格式:
对每一行诗句,判断其是否压“ong”韵。即上下两句末尾的字都是“ong”结尾。如果是压此韵的,就按题面方法糟改之后输出,输出格式同输入;否则输出 Skipped,即跳过此句。
输入样例:
xun zhang zhai ju lao diao chong, xiao yue dang lian gua yu gong.
tian sheng wo cai bi you yong, qian jin san jin huan fu lai.
xue zhui rou zhi leng wei rong, an xiao chen jing shu wei long.
zuo ye xing chen zuo ye feng, hua lou xi pan gui tang dong.
ren xian gui hua luo, ye jing chun shan kong.
输出样例:
xun zhang zhai ju lao diao chong, xiao yue dang lian qiao ben zhong.
Skipped
xue zhui rou zhi leng wei rong, an xiao chen jing qiao ben zhong.
Skipped
Skipped
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
getchar();// 消除回车
while(n--){
string s = "";
getline(cin, s); //从标准输入 cin 输入字符串 保存到 s 中
int a = s.find(','); //返回 , 的下标
int b = s.find('.'); // 返回 . 的下标
// 前句至少3个字符,后句至少三个字【注意,是三个“字”,不是三个“字符”】,所以,"ong," 即 a >= 3 ,当a <= 2 时,skipped
if( a <= || (s.substr(a - 3, 3) != "ong" || s.substr(b - , ) != "ong")){ //裁分 substr 获得子字符串,比较之
cout << "Skipped\n";
continue;
}
else{
int sum = , k = ;
for(int i = s.size() - ; sum != ; i--){ // 从后往前搞 sum != 3
// "xxx xxxx xxxx xxxx."
if(s[i] == ' ')
sum++;
k = i;
}
s.replace(k + 1, s.size() - k, "qiao ben zhong.");
// 从 k + 1 开始,长度为 s.size() - k 的字符串,替换为 “qiao ben zhong.”
}
cout << s << endl;
}
return ;
}
总结:
思路上,主要是用各种函数方法 处理字符串,获取“,” 和 "." 等关键点的位置,再截取、处理、比较、替换字符串
代码总结:
1.#include<bits/stdc++.h>
包含了目前c++所包含的所有头文件
兼容性方面:
注意,目前POJ还不支持<bits/stdc++.h>(G++、C++都不支持)。HDU部分支持(G++支持,C++不支持)。
其他国外的oj,还有台湾的oj都支持,CF,Topcoder也都支持。
当然,其实这是一个偷懒的写法,但是会降低编译速度
笔试平台可以使用,方便,VS中并不支持,一般G++ 4.4以上就支持这个头文件了。当然,私下自己学习就不要去使用了,对你的自主学习一点都没有好处。
c++11支持
其余红色加重的函数方法 可见此处链接
https://www.cnblogs.com/expedition/p/11616279.html
2.string中getline,cin的方法getline(),get总结
详细的可以戳上方的链接,此处总结如下:
(1)string中的getline
getline不是string的成员函数,属于全局函数,使用需要include<string>
有两个重载版本:
getline (istream& is, string& str, char delim);
getline (istream& is, string& str);
这两个getline读取cin流里的字符串到str中,直到遇到下列情况结束,并返回:
(a)、遇到文件结束符,如windows下模拟的ctrl+z,或无效输入
(b)、遇到换行符,即Enter,将换行符留在缓冲区中,留给下一个输入,并不存入str中,所以输出str,要自己添加endl来换行
(c)、遇到设备故障
# str自动根据输入来调整大小。如何结束while(getline(cin,str))循环呢?可以使用ctrl+z
# 第三个参数为分界符,用户可以自定义,任何有效的字符都可以,如#,默认的为Enter。
(2)cin.getline
有两个重载版本
getline(char* s, streamsize n);
getline(char* s, streamsize n, char delim);
第一个参数为字符指针,第二个控制输入的最大字符(等于n-1,最后一个位置存'\0',以便把输入存为字符串)
如果输入的字符串过长,会导致cin流状态无效不能再输入。
使用cin.clear()函数可以重设cin的状态为有效。
注意:cin.getline() 会将分界符或者换行符丢弃,即缓冲区不会有分界符用于下一个输入。但是如果输入的字符串过长,余下的字符会留在缓冲区。
代码示例:
int main()
{
char c[];
cin.getline(c, );
cout << c;
}
输入的超过4个字符,只存入了 4 -1 个字符

int main()
{
char c[];
cin.getline(c, );
cout << c;
if (!cin) cout << "cin error" << endl;
cin.getline(c, ); // cin 会无效
}
如果输入的字符串过长,会导致cin流状态无效不能再输入。

int main()
{
char c[];
cin.getline(c, );
cout << c;
if (!cin) cout << "cin error" << endl;
cin.clear();
cin.sync();
cin.getline(c, );
cout << c << endl;
}
使用cin.clear()与cin.sync()(清空缓冲区),使cin 有效,才可以继续输入“123“

(3)cin.get
三个重载版本
get(char *,int,char);
get(char*,int);
get(char&);
函数都是istream类的方法,需要对象cin才能调用。
cin.get()与cin.getline()的不同之处为:遇到换行符或分界符,get会留该字符在缓冲区,所以cin.get()的连续两次调用,后一次会读取缓冲区的字符,不会再请求输入
所以,cin.get() 无法跨行输入
char c[];
char a[];
cin.get(c,);
cin.get(a,);
可以在cin.get(c,5)与cin.get(a,4)间插入cin.get()这条语句,读取了缓冲区的换行符
使之可以继续读取输入,而不是从缓冲区读取字符
(4)cin 的特点
用于输入int ,char ,string 等基本类型,不能输入一行字符到str中。cin遇到space,tab,Enter会自动忽略,从缓冲区中丢弃,但是后续的输入会留在缓冲区,下一次的输入会直接从缓冲区读取数据
int sum=;
int n;
while(cin>>n,n!=)
{
sum+=n;
}
cout<<sum<<endl;

# 注意:while(cin>>a,a!=20)的测试条件是逗号表达式,值为逗号右边的子表达式,而不是cin>>a的返回值cin。
# 注意:如果int a;cin>>a;输入的不是整数,cin>>a是无效输入,不能再输入。
PTA --- 天梯赛 L1-059 敲笨钟的更多相关文章
- PTA 天梯赛 L1
L1-002 打印沙漏 细节:就是在 (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环 for(r=1; ;r+=2) 条件不满足之后还会再 ...
- L1-059 敲笨钟
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.为了增加敲钟的趣味性,还会糟改几句古诗词.其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”.例如唐代 ...
- L1-059 敲笨钟 (20 分)
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.为了增加敲钟的趣味性,还会糟改几句古诗词.其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”.例如唐代 ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 018-020
终于一周有这么一天能够安静下来好好学习打打题,还是很美滋滋的哈哈~加油加油~ ------------------------------------------------L1-018------- ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 001-006
应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 052-053
今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 048-49
今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 040-41
近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...
- 天梯赛L1 题解
L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. AC代码:(直接输出记性) #include & ...
随机推荐
- vmware虚拟机新增磁盘及挂载详细步骤
虚拟机新增磁盘及挂载步骤 1.新增磁盘 (1) 编辑虚拟机设置->添加 (2) 选择硬盘->下一步 (3) 选择SCSI格式,下一步 (4) 创建新虚拟磁盘,下一步 (5) 设置 ...
- (三) 结构化查询语言SQL——1
1. SQL概述 SQL,结构化查询语言,重要性不必在赘述了,基本上开发软件没有不用到的,此外在一些大数据也有广泛的应用.SQL主要包含数据定义语言(DDL).数据操纵语言(DML)以及数据控制语言( ...
- java面试题(目录版)
在https://www.cnblogs.com/marsitman/p/9539369.html 根据自己以往的面试经验,在该基础上做了补充和删减,均链接到相应的地址(链接失效请留言评论). 一. ...
- 一次使用自定义 Http Header 引发的血案
一次使用自定义 Http Header 引发的血案 HttpClient Http Header 自定义 nginx 不转发 起因 最近在整理我们产品的 OpenAPI Demo (Python.C ...
- java8新特性学习:函数式接口
本文概要 什么是函数式接口? 如何定义函数式接口? 常用的函数式接口 函数式接口语法注意事项 总结 1. 什么是函数式接口? 函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口 ...
- 开启防火墙如何部署k8s
你可以不关闭防火墙,只需要开启这些端口就行了MASTER节点6443* Kubernetes API server 2379-2380 etcd server client API 10250 Kub ...
- puppet负载均衡之nginx+passenger
由于3.x系列已不再支持mongrel,所以就采用nginx+passenger来做负载均衡:之前有发过nginx+mongrel,puppet version是2.7系列的,所以还是可以用的: 环境 ...
- 虚拟机vmware的连接方式以及IP端口,协议等概念
1.NAT虚拟机相当于小弟,宿主机相当于大哥,宿主机虚拟出一个网段供虚拟机上网用 2.Bridge桥接,虚拟机和宿主机相当于局域网中的两台机器 3.Host-Only虚拟机只和宿主机通信,无法上网 3 ...
- Hadoop-No.13之数据源系统以及数据结构
文件系统中采集数据时,应该考虑以下内容. 数据源系统设备的读取速率 在所有处理流水线中,磁盘I/O通常都是主要瓶颈.但是优化采集流程时通常要看一下检索数据的系统系统.一般来说,Hadoop的读取速度在 ...
- Mybatis问题-Type interface com.zzu.ssm.dao.UserMapper is not known to the MapperRegistry
1. mapper.xml中namespace名称是否与dao接口包名一致 2. 在mybatis配置文件中注册mapper