问题标题: 酷町堂:1091

0
0
已解决
翟谦瑞
翟谦瑞
新手守护
新手守护
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
    string a;
    cin>>a;
    for(int i=0;i<a.size();i++)
    {
        a[i]+=32;
    }
    for(int i=0;i<a.size();i++)
    {
        if(a[i]>='c'&&a[i]<='z'||a[i]>='C'&&a[i]<='Z')
        a[i]-=2;
        else a[i]+=24;
    }
    for(int i=a.size()-1;i>=0;i--)
    {
        cout<<a[i];
    }
    return 0;
}

输入:AbcD

输出:b淑y(错误的)


1
已采纳
栾峻岩
栾峻岩
初级天翼
初级天翼
    for(int i=0;i<a.size();i++)
    {
        a[i]+=32;
    }

题目说了,大写字符变小写字符,小写字符变大写字符。

你写字符大变小写字符了,小写字符呢?(输出一堆乱码了,呵呵)。

97+32=? 133? 是什么字符啊?

 

应该加一个判断:

是大写字符,变小写字符。

是小写字符,变写字符。

 

        a[i]-=2;
        else a[i]+=24;

这也错了。

字符是有ASCLL码的,这样的话,a[i]就是一个数了,就不是一个字符了。

应该是:

----=char(----)才对(这只是格式,具体请大佬自主修改)。

100AC,

1
徐云皓
徐云皓
新手天翼
新手天翼

你这思路不对:  

 string a,b;
    getline(cin,a);
    for(int i=0;i<a.size();++i)
    {
        if(a[i]>='a'&&a[i]<='z')
        a[i]-=32;
        else if(a[i]>='A'&&a[i]<='Z')
        a[i]+=32;
    }
    for(int i=0;i<a.size();++i)
    {
        if(a[i]=='a'||a[i]=='b'||a[i]=='A'||a[i]=='B')
        a[i]+=24;
        else
        a[i]-=2;
    }
    for(int i=a.size()-1;i>=0;--i)
    {
        cout<<a[i];
    }

规律是 AbcD aBCd yZAb bAZy

徐云皓在2018-03-18 18:57:31追加了内容

getline不是C库函数,而是gcc的扩展定义或者C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束:1到文件结束,2遇到函数的定界符,3输入达到最大限度。

徐云皓在2018-03-18 18:58:16追加了内容

求采纳蟹蟹

0
0
我要回答