问题标题: 酷町堂:怪题3~!!!

0
0
已解决
王俊杰
王俊杰
高级光能
高级光能

//所有字符大小写替换(ABCD——abcd)
    string s;
    getline(cin,s);
    for(int i=s.size()-1;i>=0;i--){
        if(s[i]>='A'&&s[i]<='a'){
            s[i]+=' ';    
        }
    }
    for(int i=s.size()-1;i>=0;i--){
        if(s[i]>='a'&&s[i]<='Z'){
            s[i]-=' ';
        }
    }
    cout<<s;
    //为什么大a能变成小a,而小a变不成大A 

why


0
已采纳
朱瑾文
朱瑾文
新手光能
新手光能

第四行if和第九行if写错了

        if(s[i]>='A'&&s[i]<='Z'){
            s[i]+=' ';    
        }
        if(s[i]>='a'&&s[i]<='a'){
            s[i]-=' ';    
        }
 

0
朱瑾文
朱瑾文
新手光能
新手光能

A在第一个if里面执行了变成小写字母,在第二个if里面并没有执行,所以输出小写字母。

而a在第一个if里面执行了变成a-' ',在第二个if里面执行了变成a,所以输出小写字母。

0
李瑞曦
李瑞曦
高级天翼
高级天翼

你的第一个for是将小写转成大写,字符串里的每一个字符都变成了大写,但是你的第二个for又是将大写转成小写,这样就会导致:不管这个字符串的字符是大写还是小写,都会变成小写。

我要回答