You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序运行输出空白无法使用cin输入的问题咨询

代码问题分析

核心故障原因

你观察到的「运行后控制台空白、无法输入」本质是程序没有输出任何提示信息,你不知道程序正处于等待输入的状态,并不是真的无法输入:此时直接输入两个整数按回车,连续输入3组,程序会正常运行结束,计算结果会写入你指定的txt文件中。

代码存在的具体问题

  • 没有向控制台输出输入提示:你所有的输出操作都是面向文件流outfile的,没有调用标准输出流cout打印任何提示内容,程序启动后控制台无任何文字,使用者会误以为程序卡住。
  • 缺少文件打开合法性校验:你直接使用outfile写入内容,如果指定的路径不存在(比如系统用户名不匹配、桌面路径被修改)、或程序没有对应路径的写入权限,文件流会进入失效状态,后续所有写入操作都会无效,且不会抛出任何报错。
  • 可选优化问题:计算斜边时调用pow计算整数平方没有必要,pow是面向浮点数的运算函数,用于整数计算反而可能引入精度损失,也会增加不必要的性能开销。
  • 笔误:表头的Hypotenus Length拼写错误,正确拼写为Hypotenuse Length。

修复后的参考代码

#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

int main ()
{
    int leg1, leg2;
    double hypotenuse;
    ofstream outfile("C:\\Users\\Irwin Chrisman\\Desktop\\HYPLENG.txt");
    // 新增文件打开校验
    if (!outfile.is_open()) {
        cout << "文件打开失败,请检查路径是否合法、是否有写入权限" << endl;
        return 1;
    }

    outfile <<"Hypotenuse length of three triangles"<<endl<<endl;
    outfile <<"Triangle number\tLeg 1 length\tLeg 2 length\tHypotenuse Length"<<endl;
    
    // 新增控制台输入提示
    cout << "请输入第1个三角形的两个直角边长度,用空格分隔:";
    cin >> leg1 >> leg2;
    // 优化斜边计算逻辑
    hypotenuse = sqrt(1.0 * leg1 * leg1 + 1.0 * leg2 * leg2);
    outfile <<"1\t\t"<<leg1<<"\t\t"<<leg2<<"\t\t"<<hypotenuse<<endl;

    cout << "请输入第2个三角形的两个直角边长度,用空格分隔:";
    cin >> leg1 >> leg2;
    hypotenuse = sqrt(1.0 * leg1 * leg1 + 1.0 * leg2 * leg2);
    outfile <<"2\t\t"<<leg1<<"\t\t"<<leg2<<"\t\t"<<hypotenuse<<endl;

    cout << "请输入第3个三角形的两个直角边长度,用空格分隔:";
    cin >> leg1 >> leg2;
    hypotenuse = sqrt(1.0 * leg1 * leg1 + 1.0 * leg2 * leg2);
    outfile <<"3\t\t"<<leg1<<"\t\t"<<leg2<<"\t\t"<<hypotenuse<<endl;

    outfile.close();
    cout << "计算完成,结果已写入目标文件" << endl;
    return 0;
}

内容的提问来源于stack exchange,提问作者Irwin Chrisman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:36:07