C++代码无法运行输出三角函数表(初学者编程问题)
故障根因
程序长时间无响应和电脑性能无关,是代码逻辑错误导致的死循环,具体问题点:
while (ang_deg < 91);语句末尾多余的分号是核心故障。C++中语句末尾的分号代表语句结束,这里的分号会让while循环的执行体变成空语句,程序会无限循环判断ang_deg < 91的条件,永远不会执行后续大括号内的业务代码,因此一直卡住无输出。- 表头输出逻辑位置错误:你把表头打印代码放在了循环内部,会导致每输出一行数值就重复打印一次表头,不符合常规表格的输出格式。
- 边界值未处理:90度的正切值理论上为无穷大,直接调用
tan()函数计算会触发除以0的浮点异常,输出无意义的异常值,需要单独做标记处理。
修正后代码
#define _USE_MATH_DEFINES #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double ang_deg = 0; double ang_rad = 0; // 循环外仅打印一次表头 cout << setw(7) << "ANGLE" << setw(7) << "SIN" << setw(7) << "COS" << setw(7) << "TAN" << endl; cout << fixed << setprecision(3); // 去掉while后的多余分号 while (ang_deg < 91) { ang_rad = (ang_deg * M_PI) / 180.0; cout << setw(7) << ang_deg << setw(7) << sin(ang_rad) << setw(7) << cos(ang_rad); // 单独处理90度正切无穷大的边界情况 if (ang_deg == 90) { cout << setw(7) << "inf" << endl; } else { cout << setw(7) << tan(ang_rad) << endl; } ang_deg += 15; } return 0; }
运行说明
修正后的代码可以瞬间运行完成,输出0到90度间隔15度的三角函数对照表,不会再出现长时间无响应的问题。
内容的提问来源于stack exchange,提问作者Triston_s
相关产品推荐
相关产品推荐

