第一日应试规划:输入输出与格式化学习(setw
)
结合分析的近年试卷,我明确了一些输入输出与格式化常考知识点,并制定以下功利化的学习计划,以帮助你在考试中高效得分。
学习目标
- 熟练掌握C++中输入输出流的基本用法。
- 理解并能够正确应用
iomanip
库中的格式化功能(如setw
、setprecision
)。 - 熟悉相关考点的典型题型及高效解法。
学习内容
1. 输入输出流基础
- 输入(
cin
)与输出(cout
):- 格式化输入:
cin >>
的基本用法。 - 输出时的换行符与对齐方式。
- 格式化输入:
- 常考问题:
- 多组输入如何处理(如循环读取)。
- 混合输入(数字与字符串混用时)导致的流状态问题。
2. 格式化输出
setw
用法:- 功能:设置输出宽度。
- 使用场景:考试中通常出现在表格对齐输出题中。
- 注意事项:
- 宽度不足时不自动填充空格,需要结合
setfill
。 setw
仅对当前行的下一个输出有效。
- 宽度不足时不自动填充空格,需要结合
setprecision
与小数位控制:- 控制输出的浮点数精度。
- 默认使用科学计数法时如何显示小数。
3. 常见组合使用
- 配合
setw
和left
或right
控制对齐方向。 - 使用
setfill
填充特定字符。
应试高频考点
考点 1:使用setw
进行对齐输出
- **题型例子:**2022年【填空题3】和2020年【阅读题2】均要求对齐输出数字或字符串。
- 典型题:
#include <iostream> #include <iomanip> using namespace std; int main() { int data[] = {1, 23, 456, 7890}; for (int i = 0; i < 4; i++) { cout << setw(6) << data[i] << endl; // 每行右对齐,宽度6 } return 0; }
- 易错点:
- 忘记每次都需调用
setw
。 - 使用
setw
时意外的输出未对齐。
- 忘记每次都需调用
考点 2:小数点精度与格式化
- **题型例子:**2021年【编程题1】要求输出精确到小数点后2位。
- 典型题:
#include <iostream> #include <iomanip> using namespace std; int main() { double pi = 3.141592653589793; cout << fixed << setprecision(2) << pi << endl; // 输出3.14 return 0; }
- 易错点:
- 忘记固定浮点显示模式(
fixed
)。 - 设置精度后意外改变全局浮点数输出样式。
- 忘记固定浮点显示模式(
考点 3:多列数据的表格输出
- **题型例子:**2020年【阅读题5】。
- 典型题:
#include <iostream> #include <iomanip> using namespace std; int main() { cout << setw(10) << "Name" << setw(10) << "Score" << endl; cout << setw(10) << "Alice" << setw(10) << 95 << endl; cout << setw(10) << "Bob" << setw(10) << 88 << endl; return 0; }
考点 4:混合输入问题
- **题型例子:**2023年【阅读题4】中有混合输入(字符数组与整数)。
- 典型题:
#include <iostream> using namespace std; int main() { int num; char str[10]; cin >> num >> str; cout << "Number: " << num << ", String: " << str << endl; return 0; }
每日任务
-
学习视频/课本内容:
- 阅读《C++程序设计基础》关于
setw
的章节。 - 自行整理笔记,特别关注与输入/输出相关的代码示例。
- 阅读《C++程序设计基础》关于
-
练习题目:
- 2017年【填空题1】、【阅读题3】。
- 2020年【阅读题2】。
- 2021年【编程题1】。
- 2023年【阅读题4】。
- 自编题:给定10个学生的姓名与成绩,输出对齐表格。
-
总结与错题整理:
- 记录
setw
类试题常见问题。 - 将不熟练的细节标记出来,并在后续复习时强化。
- 记录
预期结果
通过本日的学习与练习,你将:
- 熟悉考试中关于输入输出与格式化的高频考点。
- 能够灵活应用
setw
、setprecision
等进行格式化输出。 - 提高对常见题型的应试熟练度,在此类考题中确保拿到满分。
Initially(头文件:)
fixed
用法:
只要出现了fixed,则后面都是以fixed输出。
那么只需要写
cout<<fixed<<x<<endl;
cout<<y<<endl;//之后不用再打一遍fixed了
作用:
无科学记数法而且小数点后的位数是6位!!!
无论输入的是整数还是浮点数,最终在输出的时候都会是浮点型
//类型一:整数位很多
double x=12345678;
//类型二:小数位很多,有效小数位少
double y=0.00001234;
cout<<fixed<<x<<endl;
cout<<fixed<<y<<endl;
输出结果是:
12345678.000000
0.000012
setw()
若想用setw(int n)呢,要加头文件 < iomanip > [io+manipulator的意思]
其控制后面输出的长度,默认右对齐,输出内容长度不够用空格补齐,输出内容长度超过则正常输出。
注:1. setw()只对后面紧跟的输出有限制。
2.标点符号占一位!
double x = 0.1;
double y = 0.123456;
cout <<setw(7)<< x << endl;
cout << x << endl;
cout << setw(3)<<y << endl;\
输出结果是
0.1
0.1
0.123456
setprecision()
若想用setprecision()呢,要加头文件 < iomanip >
提示;
这里不能输入变量,但是可以输入宏定义的常量或者const修饰的常变量
作用:
同样能够控制精度,控制整数位 + 小数位
当并未使用fixed语句时,而是直接使用setprecision语句的话,他计算的位数是整数位 + 小数位
控制小数位
当像下面这么使用时,
cout << fixed << setprecision(n);
在输出时,输出的小数小数点后面就有n位,
注意
需要注意的是:这fixed,setprecision两个控制语句能控制这条语句后面的所有语句,当需要改变时,需要重新写一条语句
并且这两条语句只是控制输出格式,并不会对数据本身造成改变