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