C++ Primer Plus编程练习4.13 第1题 cin输入含空格的字符串
题目:
1. 编写一个c++程序,如下述输出示例所示的那样请求并显示信息:
What is your first name? Betty Sue
What is your last name? Yewe
What letter grade do you deserve? B
What is your age? 22
Name : Yewe,BeLty Sue
Grade : C
Age : 22
注意,该程序应该接受的名字包含多个单词。另外,程序将向下调整成绩,即向上调一个字母。假设用户请求A、B或C,所以不必担心D和F之间的空档。
答案:书上无答案。
C++技术网辅导详解解答:
参考代码:
#include <iostream>
using namespace std;
int main()
{
char name_first[50], name_last[50];
char grade;
int age;
cout << "What is your first name ?";
cin.getline(name_first,50); //此处不能用cin直接输入,否则输入到空格字符就断开输入了。
cout << "What is your last name ?";
cin >> name_last;
cout << "What letter grade do you deserve ?";
cin >> grade;
cout << "What is your age ?";
cin >> age;
cout << "Name : " << name_last << ", " << name_first << endl;
cout << "Grade : " << (char)(grade + 1) << endl;
cout << "Age : " << age << endl;
return 0;
}
这里两个点需要注意,第一个就是对于空白字符的输入,我们不能用cin直接输入,否则遇到空格字符时就停止输入了,那么剩余的部分就自动赋值给了下一次的输入。所以我们使用cin.getline来输入一行。第二个就是输出时对字母字符+1的操作,+1后要将类型转为char,否则类型就被转换为了int而输出的是字母C的编码值而不是字母C哦。