首页 > 解决方案 > 非常基本的问题 c++) 为什么我的打印答案与我希望得到的不同?

问题描述

这是我的简单源代码:

char a, b;
cin >> a >> b;


if (a >= 'A' && a <= 'Z')
{
    a = a + 'a' - 'A';
    cout << a;
}
if (a >= 'a' && a <= 'z')
{
    a = a + 'A' - 'a';
    cout << a;
}
if (b >= 'A' && b <= 'Z')
{
    b = b + 'a' - 'A';
    cout << b;
}
if (b >= 'a' && b <= 'z')
{
    b = b + 'A' - 'a';
    cout << b;
}
return 0;

}

我想将小写字母变为大写字母,反之亦然。小写字母可以找到,但不知何故大写字母却找不到。

标签: c++

解决方案


if例如,您的第二个语句具有反转第一个if语句的效果。

写作

if (a >= 'A' && a <= 'Z')
{
    a = a + 'a' - 'A';
    cout << a;
}
else if (a >= 'a' && a <= 'z')

等等,是修复。(注意else。)将相同的方案应用于b.

完成此操作后,请使用 C++ 标准库函数std::islowerstd::tolowerstd::iuspperstd::toupper。您提供的代码不是严格可移植的,因为标准不保证字母字符是有序的。


推荐阅读