题解:P5733 【深基6.例1】自动修正

· · 题解

题目传送门

题意

给出一个长度不超过 100 且不包括空格的字符串,要求将该字符串中的所有小写字母变成大写字母并输出,注意除小写字母外的字符均不改变。

思路

我们可以先定义一个字符串 s,读入后从头到尾遍历该字符串,如果判断当前字符 s[i] 是小写字母,就将其更改为大写字母,否则就跳过不做处理。对此,就要用到 ASCLL 码的性质,对于每个字符,判断如果:

s[i]>='a'&&s[i]<='z'

那么该字符就是小写字母。对于每个小写字符,将其加上 'a'-'A',便可转化为大写字母。

代码

#include<bits/stdc++.h>
using namespace std; 
string s;
int main(){
    cin>>s;
    for(int i=0;i<s.length();i++){
        if(s[i]>='a'&&s[i]<='z'){
            s[i]=s[i]-('a'-'A');
        }
    } 
    cout<<s;
    return 0;
}