2.3 cin输入语句
正在加载视频播放器…
GESP C++ 一级:cin 输入语句精讲
核心目标:会用
cin从键盘读入数据,能按题目要求正确读入整数、小数、字符,理解连续输入和空白字符处理。
cin用>>把键盘输入的数据送到变量里,自动跳过空格、换行、制表符,但不能直接读入空格。
一、cin 是什么
cin 是 C++ 的标准输入流对象,用于从键盘读入数据。
使用前需要:
#include <iostream>
//(#include<bits/stdc++.h> 使用万能头更方便)
//视频内均使用万能头
using namespace std;
基本形式:
cin >> 变量;
cin:输入目标,代表键盘。>>:流提取运算符,把输入流中的数据提取到右边的变量中。;:语句结束,必须写。
记忆口诀:
cin 用 >>,数据从键盘流入变量;
cout 用 <<,数据从变量流向屏幕。
二、基本语法
1. 输入一个变量
int a;
cin >> a;
程序运行后,等待用户输入一个整数,按回车后,这个数被存入 a。
2. 连续输入多个变量
int a, b;
cin >> a >> b;
等价于:
cin >> a;
cin >> b;
输入时可以用空格或换行分隔:
3 5
或:
3
5
都可以。
3. 输入和输出配合
int a, b;
cin >> a >> b;
cout << a + b << endl;
输入:
3 5
输出:
8
三、输入不同类型的数据
| 类型 | 写法示例 | 输入说明 |
|---|---|---|
| 整数 | int a; cin >> a; |
输入整数,如 123 |
| 长整数 | long long x; cin >> x; |
输入大整数 |
| 浮点数 | double d; cin >> d; |
输入小数,如 3.14 |
| 字符 | char c; cin >> c; |
输入一个字符,跳过空白 |
| 布尔值 | bool f; cin >> f; |
通常输入 0 或 1 |
示例:
int a;
double b;
char c;
cin >> a >> b >> c;
输入:
10 2.5 A
则:
a = 10
b = 2.5
c = 'A'
四、空白字符的处理
1. cin >> 会自动跳过空白
空白字符包括:
- 空格
- 换行
- 制表符(Tab)
例如:
int a, b;
cin >> a >> b;
输入:
3
5
程序仍然能正确读入 a = 3,b = 5。因为 cin >> 会自动跳过前面的空格和换行。
2. cin >> 不能读入空格
char c;
cin >> c;
如果输入:
A
c 得到的是 'A',前面的空格被跳过了。
如果输入:
空格
cin >> c 会一直等待,直到读到非空白字符。所以它不能用来读入空格本身。
3. 想读入空格怎么办
使用 cin.get():
char c;
cin.get(c);
cin.get(c) 会读取任意一个字符,包括空格和换行。
一级考试中,
cin.get()属于了解内容,重点还是cin >>。
五、字符输入专题
1. 连续输入两个字符
char a, b;
cin >> a >> b;
输入:
A B
结果:
a = 'A'
b = 'B'
输入:
AB
结果:
a = 'A'
b = 'B'
因为 cin >> 会跳过空白,所以 A B 和 AB 效果一样。
2. 输入数字和字符混合
int n;
char c;
cin >> n >> c;
输入:
5 A
结果:
n = 5
c = 'A'
输入:
5A
结果:
n = 5
c = 'A'
输入:
5
A
结果:
n = 5
c = 'A'
因为 cin >> c 会跳过换行。
3. 字符输入易错点
char c;
cin >> c; // 会跳过空格和换行
如果题目要求读入一个空格,不能直接用 cin >> c。
六、输入多个数据
1. 输入固定个数
int a, b, c;
cin >> a >> b >> c;
输入:
1 2 3
或:
1
2
3
都可以。
2. 输入到数组(一级不要求)
一级不考数组,但循环读入多个数可能涉及:
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
// 处理 x
}
3. 读入直到结束(拓展)
int x;
while (cin >> x) {
// 处理 x
}
按 Ctrl+Z(Windows)或 Ctrl+D(Linux)表示输入结束。一级了解即可。
七、常见输入模型
1. 两个数求和
int a, b;
cin >> a >> b;
cout << a + b << endl;
2. 三个数求最大值
int a, b, c;
cin >> a >> b >> c;
int maxv = a;
if (b > maxv) maxv = b;
if (c > maxv) maxv = c;
cout << maxv << endl;
3. 输入字符判断大小写
char c;
cin >> c;
if (c >= 'a' && c <= 'z') {
cout << "小写字母";
} else if (c >= 'A' && c <= 'Z') {
cout << "大写字母";
} else {
cout << "其他";
}
4. 输入小数求平均
double a, b;
cin >> a >> b;
cout << fixed << setprecision(2) << (a + b) / 2 << endl;
需要:
#include <iomanip>
八、易错点
-
cin写成cout,或>>写成<<。cin << a; // 错误 cin >> a; // 正确 -
漏写分号。
cin >> a // 错误,缺少 ; -
变量未声明。
cin >> a; // 错误,a 未定义 int a; -
类型不匹配。
int a; cin >> a; // 如果输入 3.14,a 只会得到 3 -
用逗号分隔输入。
cin >> a >> b;输入必须用空格或换行分隔,不能写
3,5。
如果输入3,5,a会得到 3,b读入失败。 -
输入字符时忘记跳过空白。
char c; cin >> c; // 空格会被跳过 -
输出多余提示语。
考试时不要写:cout << "请输入两个数:"; cin >> a >> b;这可能导致输出格式错误。
-
中文标点。
cin >> a; // 错误,中文分号 -
忘记
#include <bits/stdc++.h>或using namespace std;。 -
输入顺序写错。
int a, b; cin >> b >> a; // 先读入的给 b,再给 a
九、阅读程序写结果
题目 1
int a, b;
cin >> a >> b;
cout << a + b << endl;
输入:
3 5
输出:
8
题目 2
char c;
cin >> c;
cout << c << endl;
输入:
A
输出:
A
题目 3
char a, b;
cin >> a >> b;
cout << a << "-" << b << endl;
输入:
X Y
输出:
X-Y
题目 4
int n;
char c;
cin >> n >> c;
cout << n << " " << c << endl;
输入:
5A
输出:
5 A
题目 5
int a, b;
cin >> a >> b;
cout << a / b << " " << a % b << endl;
输入:
7 3
输出:
2 1
十、速查表
| 需求 | 写法 |
|---|---|
| 输入整数 | int a; cin >> a; |
| 输入小数 | double x; cin >> x; |
| 输入字符 | char c; cin >> c; |
| 连续输入多个 | cin >> a >> b >> c; |
| 输入空格分隔 | 直接写 cin >> a >> b; |
| 输入换行分隔 | |
| 读入空格字符 | cin.get(c); |
| 输入结束 | Ctrl+Z 或 Ctrl+D |
| 循环读入 | while (cin >> x) { ... } |
十一、与 cout 的对比
| 项目 | cin |
cout |
|---|---|---|
| 作用 | 从键盘输入 | 向屏幕输出 |
| 运算符 | >> |
<< |
| 方向 | 数据流入变量 | 数据流出到屏幕 |
| 示例 | cin >> a; |
cout << a; |
| 自动跳过空白 | 会跳过空格、换行 | 不涉及 |
| 换行 | 输入时自动跳过 | 需要自己加 endl 或 \n |
十二、总结
cin 是一级考试中最重要的输入工具。
cin >> 变量;从键盘读入数据到变量。>>可以连续使用,按顺序给变量赋值。- 输入时用空格或换行分隔,
cin会自动跳过空白。 cin >>不能读入空格。
复习时多练“输入两个数求和”“输入字符判断”“输入多个数计算”等题型,注意变量顺序、类型匹配、分号和引号。考试时不要输出多余提示语,输入格式要严格按题目要求。