CC++ & Algorithm

C++中的输入法:cin

简单48
语言版本:C++Python
概述:学习如何用cin让程序从键盘读取我们输入的数据,就像给程序“喂”信息一样。

让程序“听”懂你的话:C++中的cin输入详解

什么是cin?给程序装上一只“耳朵”

当你玩计算器游戏时,是不是希望程序能知道你想算哪两个数?或者写一个“猜年龄”游戏,让程序猜你输入的年龄?这时候,程序就需要一个“耳朵”来接收你从键盘输入的信息。在C++里,这个“耳朵”就是 cin(读作“see-in”)。

cin的全名是 std::cin,它属于 iostream(输入输出流)家族。你每次按下键盘上的数字、字母,再按回车,这些数据就会像声音一样“流”进程序里。而 >> 符号就像一个滑梯,把输入的数据滑进你准备好的“口袋”(变量)中。

第一步:准备好工具

要用cin,必须先写两行代码:

#include <iostream>   // 引入输入输出工具
using namespace std;  // 让我们可以直接写cin,不用写std::cin

这就像你玩游戏前要先打开游戏机电源一样。#include <iostream> 是接通电源,using namespace std; 是让你可以直接按手柄上的按钮,不用每次都说“主机的A键”。

第二步:用cin读取一个值

假设你想让用户输入年龄,可以这样做:

#include <iostream>
using namespace std;
int main() {
    int age;                    // 定义整型变量age,当作“口袋”
    cout << "请输入你的年龄:";  // 先提示一下(cout是嘴巴)
    cin >> age;                 // 程序停在这里,等你输入数字并按回车
    cout << "你今年" << age << "岁啦!" << endl;
    return 0;
}

运行后,屏幕会显示“请输入你的年龄:”,然后光标一闪一闪地等你。你输入“12”并按回车,程序就会输出“你今年12岁啦!”。

小实验:如果年龄是小数呢?比如输入12.5,会发生什么?程序会把整数部分“12”存进age,小数部分“.5”可能会留在输入缓冲区里,导致后续输入出错。所以我们一定要保证输入的类型和变量类型一致。

第三步:读取多个值——一次输入多个数

有时候你需要输入好几个数,比如计算两个数的和。cin可以像串糖葫芦一样,把多个输入连起来:

int a, b;           // 定义两个整型变量a和b
cin >> a >> b;      // 连续输入两个数,用空格或回车隔开

实际例子:

#include <iostream>
using namespace std;
int main() {
    int num1, num2;             // 定义两个整数变量
    cout << "请输入两个数(中间用空格隔开):";
    cin >> num1 >> num2;        // 输入两个数
    cout << "它们的和是:" << num1 + num2 << endl;
    return 0;
}

运行后,如果你输入“5 8”并按回车,程序就会算出和是13。

生活中的比喻:自动售货机与投币口

想象你在学校门口的自动售货机前,想买一瓶可乐。机器上有一个投币口,你把硬币(输入的数据)塞进去,机器就知道你要付多少钱。在C++里,cin 就是那个投币口,>> 是把硬币滑进机器内部的滑道,而你定义的变量(比如 money)就是机器里存钱的盒子。如果你塞进一个不是硬币的东西(比如一张纸片),机器就会卡住——这就是类型不匹配时程序出错的原因。

新手容易犯的错误

  1. 忘记包含头文件:如果没写 #include <iostream>,编译器会大喊“cin不认识,你是谁?”然后报错。

  2. 忘记 using namespace std;:如果没写,你就要把cin写成 std::cin,否则也会报错。不过对于初学者,建议先加上 using namespace std;,后面再学习更规范的写法。

  3. 输入类型不匹配:比如变量是 int,你却输入字母“abc”,程序会陷入混乱,cin会进入“失败状态”,后续所有输入都不管用了。所以输入时一定要看清楚类型。

  4. 变量没定义就直接用:比如写了 cin >> x; 但前面没写 int x;,程序会报变量未定义。

  5. 忽略cin读取字符串时的空格问题:如果变量是 string name; 然后 cin >> name;,那么输入“张三 李四”时,cin只会把“张三”给name,“李四”被留在缓冲区里。这是cin的一个小脾气——它遇到空格、换行就会停下。不过对于一级同学,暂时先知道就好,以后会学到 getline 来读取一整行。

完整示例:一个自我介绍互动程序

把cin和cout结合起来,写一个能介绍自己的小程序:

#include <iostream>
using namespace std;

int main() {
    string name;            // 定义字符串变量name,用来存名字
    int age;                // 定义整型变量age,用来存年龄
    
    cout << "你好!请告诉我你的名字:";
    cin >> name;            // 读取名字(注意:不能有空格)
    
    cout << "你好," << name << "!你今年几岁?";
    cin >> age;             // 读取年龄
    
    cout << "哇," << name << "今年" << age << "岁,真是个好年纪!" << endl;
    
    return 0;
}

运行示例:

你好!请告诉我你的名字:小明
你好,小明!你今年几岁?10
哇,小明今年10岁,真是个好年纪!

相关指引

学会用cin“听”用户的话之后,你还需要学会让程序“说话”——那就是 cout。另外,如果你想更精确地控制输入输出的格式(比如保留两位小数),可以学习更古老的 scanfprintf。你可以继续阅读:

  • [C++中的输出能手:cout]
  • [C++中的格式化输入输出:scanf和printf]

现在,你可以试着用cin让用户输入自己的身高(小数)和体重,然后输出BMI指数。或者写一个“零花钱计算器”,让用户输入每天零花钱金额和天数,算出总共有多少钱。加油!

例题精讲

1单选题

在C++中,使用cin进行输入时,需要包含哪个头文件?

A<iostream>
B<cstdio>
C<string>
D<fstream>
2单选题

执行以下代码后,如果输入"10 3.14",则变量a和b的值分别是?\nint a; double b; cin >> a >> b;

Aa=10, b=3.14
Ba=10, b=3
Ca=10.0, b=3.14
D编译错误
3判断题

在C++中,使用cin >> 读取字符串时,遇到空格就会停止读取。

4填空题
以下程序用于输入两个整数并输出它们的和。请补全代码。\n#include <iostream>\nusing namespace std;\nint main() {\n    int a, b;\n    ___ // 输入a和b\n    cout << a + b << endl;\n    return 0;\n}
5填空题
以下程序用于输入一个字符和一个整数,然后输出它们。请补全代码。\n#include <iostream>\nusing namespace std;\nint main() {\n    char ch;\n    int num;\n    ___ // 输入字符和整数\n    cout << "字符:" << ch << " 整数:" << num << endl;\n    return 0;\n}