P5733 自动修正
Posted 书山压力大XU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P5733 自动修正相关的知识,希望对你有一定的参考价值。
字符串题解第一弹~
千万不能错过的原题连接
今天就研究一下这道自动修正问题哈 首先,我们看到了小写转大写的时候,就知道该祭出字符界的大佬级选手ASCII来解决这道问题,然后又看到了一个非常关键的信息
字符串里不包含空格
那这样的话就可以轻轻松松的用printf来输入啦(但本人疑似用惯了cin和cout),下面请出程序中的灵魂:
- 输入数据(这是改变不了滴)
- 将字符串利用下标筛选出没有变成大写的英文字符(注意关键语言if(a[i]>96&&a[i]<123))
- 用(int)强制类型转换再将该字符的ASCII值-32
- 把转换完的大写字母替换掉原来的字符
- 输出
这里呢,我偷了一点懒,没错就是第四条(似乎再定义一个字符串占得不是,而是我的脑子),还有要注意的就是第二条,一定要用&&啊!!!千万不要只判定一个(而且第二条我也偷懒了,如有发现,欢迎评论)
梳理完步骤后,我很快就敲出了这个代码(借鉴群里某位人才的做法,我也不使Markdown里看的强迫症发晕的插入代码了)
include
include
using namespace std;
int main()
{
char a[150];
int z;
cin>>a;
z=strlen(a);
for(int i=0;i<z;i++){
if(a[i]>97&&a[i]<122)
a[i]=(int)a[i]-32;
}
cout<<a;
return 0;
}
我满心欢喜的把代码提交上去,结果5个测试点全WA了!!!
我一看程序。。。
if语句把a和z给搞丢了,所以赶紧补上,以下是AC代码
include
include
using namespace std;
int main()
{
char a[150];
int z;
cin>>a;
z=strlen(a);
for(int i=0;i<z;i++){
if(a[i]>96&&a[i]<123)
a[i]=(int)a[i]-32;
}
cout<<a;
return 0;
}
好了~本篇题解就到此为止咯!
以上是关于P5733 自动修正的主要内容,如果未能解决你的问题,请参考以下文章