欢迎光临散文网 会员登陆 & 注册

C++信息竞赛例题解析——字符串

2020-10-16 22:57 作者:非知名科技区UP  | 我要投稿

最近我们刚讲了C++字符串的应用。有一道例题,我印象很深。

题目来源于noi.openjudge.cn

对于我个人来说,这道题有几个难点:

  1. 程序中如何才能定位每一行的第一个字符并且确认其大小写?

  2. 如何才能把所有的“药品名”用一个string包含进去?

初次写的程序

针对第一个问题,准备利用cin的特性来解决。如图7-11行。当我们回车的时候,a也会随之增加,如此我们就可以将药品名称逐一分别存储了。

在改写字母大小写的栏目里,我使用了双重循环。第一个判定就把首字母的大小写完美解决了。而针对需要全部小写的其他字母,我在下面的if里面逐个判定更正,为了防止在查找大写字母时把头个字母变成小写,我就将13行的b直接赋值为1,避开首字母的位置medicine[a][0],理论上这样就完美了。

 但是

到了这里又是一个难点:特殊情况。

我也是百思不得其解,直到我尝试着只输入一个字母的时候,问题出现了(话说哪有一个字母的药名啊)

根本没有转换大小写

然后我才意识到了:当前面的“kind变量等于1的时候,整个13-19行的for循环根本不会执行!也就没有大小写的转换了。要想克服这种情况,13行b的赋值必须是0。到最后,我的解决方案是这样 的:

注意我在13行for和16行if条件的改动

到最后,程序终于通过。


C++信息竞赛例题解析——字符串的评论 (共 条)

分享到微博请遵守国家法律