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哦。