如何使C++控制台输出的正弦函数查找表数值对齐?
让C++控制台输出数值对齐的解决方案
嘿,这个问题我太熟悉了!要让你的正弦函数查找表输出整整齐齐,只需要用到C++标准库的格式化工具就行,不用自己手动凑空格。下面给你一步步讲清楚怎么改:
首先,你需要先包含<iomanip>头文件——这个头文件里藏着所有控制输出格式的工具,比如设置宽度、精度的函数。
然后,利用setw()、fixed和setprecision()这几个家伙来控制输出:
setw(n):指定下一个输出字段的宽度为n个字符,不够的地方会自动补空格,这样每一列就能对齐了。fixed:强制输出以固定小数形式展示,避免出现科学计数法,保证所有数值的小数部分长度一致。setprecision(k):设置小数部分保留k位,让所有数值的精度统一。
我把你的代码修改好了,直接就能用:
#include "stdafx.h" #include <iostream> #include <cmath> #include <iomanip> // 新增的头文件,必须加! using namespace std; int main() { double hw = 4.0; int nsteps = 30; const double PI = 3.14159; const double maxx = hw * PI; const double deltax = maxx / nsteps; double x = 0.0; // 先输出表头,也做对齐处理,看起来更清晰 cout << setw(12) << "x值" << setw(12) << "sin(x)" << endl; cout << "-------------------------" << endl; // 把循环条件改成<=nsteps,这样能包含x=maxx的情况,查找表更完整 for (int i = 0; i <= nsteps; i++) { const double f = sin(x); // 每列宽度设为12,保留4位小数,固定格式输出 cout << setw(12) << fixed << setprecision(4) << x << setw(12) << fixed << setprecision(4) << f << endl; x += deltax; } return 0; }
这里还有几个小细节要注意:
- 我把你原来的
cerr换成了cout——cerr是用来输出错误信息的标准错误流,输出正常的查找表用cout更合适。 - 循环条件从
i < nsteps改成了i <= nsteps,这样最后一个x值会等于maxx,你的查找表就能覆盖从0到4π的完整范围了。 - 表头的宽度和内容的宽度保持一致,整体看起来更协调,你可以根据自己的需求调整
setw()里的数字(比如改成10或者15),也可以修改setprecision()的位数来调整精度。
这样运行之后,控制台输出的每一列都会整整齐齐,看起来特别舒服!
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

