第 5 课:基本数据类型与输入
本课学习目标: 1. 理解 C++ 中为什么变量必须有“类型”,掌握整型、实数型、字符型、布尔型的基本用途。 2. 熟练掌握 C++ 风格的输入语句
cin及其连续输入特点。 3. 熟练掌握 C 风格的输入函数scanf("%d", &N),牢记变量名前必须加&。 4. 攻克 GESP 一级高频易错题:整型变量输入遇到小数、算式(如5+2)时的截断规则。
一、 为什么变量要有类型?
在定义变量时,我们必须明确写出它的类型。类型决定了变量能存什么样的数据,也决定了计算机该如何处理它。
int a = 10; // 整型:保存整数
double b = 3.14; // 实数型:保存小数
char c = 'A'; // 字符型:保存单个字符
bool d = true; // 布尔型:保存真或假
- 类型不同,命运不同:如果把一个小数赋给整型变量(如
int x = 3.14;),小数部分会被直接舍弃,x的值最终只剩下3。
二、 常用基本数据类型速查
| 类型名称 | 关键字 | 用途说明 | 示例 |
|---|---|---|---|
| 整型 | int |
保存正整数、负整数和 0(一级最常用) | int a = -5; |
| 长整型 | long long |
保存更大范围的整数 | long long x = 10000000000; |
| 单精度浮点型 | float |
保存小数 | float x = 3.14; |
| 双精度浮点型 | double |
保存小数(比 float 更精准,常用) |
double pi = 3.1415926; |
| 字符型 | char |
保存单个字符(用单引号) | char ch = 'A'; |
| 布尔型 | bool |
保存逻辑真 (true) 或假 (false) |
bool ok = true; |
三、 使用 cin 进行输入(C++ 风格)
cin 是 C++ 中专职负责输入的语句,配合提取运算符 >> 使用。
* 基本写法:cin >> 变量名;
* 连续输入多个变量:
cpp
int a, b;
cin >> a >> b;
💡 核心考点(分隔符):
cin在读取数据时,会自动跳过并忽略空格、回车(换行)、制表符(Tab)等空白字符。 这意味着,输入10 20(中间有空格)或者分两行输入10和20,对cin >> a >> b;而言没有任何区别,都能完美读入。
四、 使用 scanf 进行输入(C 风格)
GESP 一级考试中非常喜欢考查 C 风格的输入函数 scanf。
1. 读入整数
int N;
scanf("%d", &N);
%d:格式控制符,代表要读取一个十进制整数。&N:极其重要的符号! 变量名前面必须加取地址符&,代表把输入进来的数字存到变量N的内存地址中。- 对比记忆:用
cin >> N;时千万不要加&;而用scanf("%d", &N);时千万别漏了&。
2. 读入小数与字符
- 读入
double类型:double x; scanf("%lf", &x);(注意是%lf) - 读入
float类型:float x; scanf("%f", &x); - 读入
char类型:char ch; scanf("%c", &ch);
五、 🚨 GESP 一级输入题四大高频陷阱(必考)
考试最喜欢考“当用户输入了奇怪的内容时,变量到底读到了什么”。
陷阱 1:整型变量输入遇到算式(如 5+2)
int i;
cin >> i;
- 如果用户输入:
5+2 - 程序读到的结果:
i的值是5。 - 原因:
i是整型变量,cin >> i会从前往后读取整数。当读到5之后遇到了+号,+不属于整数的合法字符,于是停止本次读取。程序不会把5+2当作数学表达式去计算。
陷阱 2:整型变量输入遇到小数(如 3.14)
int N;
cin >> N;
- 如果用户输入:
3.14 - 程序读到的结果:
N的值是3。 - 原因:整型变量只吃整数部分,遇到小数点
.直接停止读取。
陷阱 3:字符变量 char 的脾气
char ch;
cin >> ch;
- 如果用户输入:
10 - 程序读到的结果:
ch的值是字符'1'。 - 原因:
char类型一次只读一个字符。输入10时,它先抓到了第一个字符'1'就收工了。
六、 GESP 一级真题与例题精讲
练一练 1:整型输入遇到算式
【题目】
下面程序输入 5+2 后,输出是( )。
int i;
cin >> i;
cout << i;
A. 7
B. 5
C. 程序报错
D. 输出不确定
正确答案:B 名师解析:
i是整型变量。cin读整数时遇到+号会停止读取,因此只能成功提取出前面的5。程序不会自动帮你做加法运算。
练一练 2:整型变量截断小数
【题目】
下面程序输入 3.14 后,输出通常是( )。
int N = 0;
cin >> N;
cout << N;
A. 3.14
B. 3
C. 0
D. 程序一定报错
正确答案:B 名师解析: 变量
N是int(整型),当输入3.14时,cin读到整数部分的3,遇到小数点.停止读取。所以N的值被赋值为3。
练一练 3:cin 与 scanf 的语法辨析
【题目】
下面哪个写法可以用 scanf 读入一个整数到变量 N?( )
A. scanf("%d", &N);
B. scanf("%d", N);
C. scanf(N, "%d");
D. scanf("&N", %d);
正确答案:A 名师解析: C 风格输入函数
scanf必须包含格式控制字符串(读整数用"%d"),并且其后的变量名必须加上取地址符&。因此只有 A 选项完全正确。
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com