P5733 自动修正

Posted 书山压力大XU

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P5733 自动修正相关的知识,希望对你有一定的参考价值。

字符串题解第一弹~

千万不能错过的原题连接
今天就研究一下这道自动修正问题哈 首先,我们看到了小写转大写的时候,就知道该祭出字符界的大佬级选手ASCII来解决这道问题,然后又看到了一个非常关键的信息

字符串里不包含空格

那这样的话就可以轻轻松松的用printf来输入啦(但本人疑似用惯了cin和cout),下面请出程序中的灵魂:

  1. 输入数据(这是改变不了滴)
  2. 将字符串利用下标筛选出没有变成大写的英文字符(注意关键语言if(a[i]>96&&a[i]<123)
  3. 用(int)强制类型转换再将该字符的ASCII值-32
  4. 把转换完的大写字母替换掉原来的字符
  5. 输出
    这里呢,我偷了一点懒,没错就是第四条(似乎再定义一个字符串占得不是,而是我的脑子),还有要注意的就是第二条,一定要用&&啊!!!千万不要只判定一个(而且第二条我也偷懒了,如有发现,欢迎评论)
    梳理完步骤后,我很快就敲出了这个代码(借鉴群里某位人才的做法,我也不使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 自动修正的主要内容,如果未能解决你的问题,请参考以下文章

入门5字符串

入门5字符串

入门5字符串

音频处理Melodyne 自动修正功能 ( 修正音高中心 | 修正音高补偿 | 节拍自动修正 | 量化时间 )

mac下面禁止输入法自动修正

python实现mongo自动添加地图索引, 自动修正遇到的问题