题目:

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类型,所以不能直接输出,而需要先强制类型转换一下,否则输出的是字符的编码值。