当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 6.11 编程练习题 第1题 字符的大小写转换和回显字符

C++ Primer Plus 6th 6.11 编程练习题 第1题 字符的大小写转换和回显字符

更新时间:2019-05-09 11:58:56浏览次数:1+次

题目:

1.编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写,将小写字符转换为大写(别忘了cctype函数系列)。 

 

答案:  书上无答案。

C++技术网辅导详解解答:
    参考代码:

#include <iostream>
#include <cctype>
using namespace std;
int main()
{
    char ch;
    while ((ch = cin.get()) != '@')
    {
        if (!(ch <= '9' && ch >= '0'))
        {
            if (isupper(ch))
            {
                cout << (char)tolower(ch);
            }
            else if (islower(ch))
            {
                cout << (char)toupper(ch);
            }
            else
            {
                cout << ch;
            }
        }
    }
    return 0;
}

    需要注意的是,while条件判断里,需要注意优先级。不要写成:ch = cin.get() != '@' 。这样是错误的。因为后面的!=会优先执行,这样会导致ch的值总是1而错误了。另外,tolower和toupper函数返回的是int类型,所以不能直接输出,而需要先强制类型转换一下,否则输出的是字符的编码值。