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

VS Code生成的.exe双击运行无输出、窗口闪退问题咨询

解答

你的认知完全正确,编译生成的.exe就是具备完整输入、计算、输出功能的可执行程序。双击运行时窗口直接消失看不到输出,是Windows控制台程序的通用运行特性导致的,你的程序逻辑本身没有问题——VS Code内置终端中运行正常已经可以佐证这一点。

闪退原因

直接双击控制台类.exe启动程序时,Windows会为程序临时分配一个独立的控制台窗口,程序从main函数入口开始按顺序执行读取输入、逻辑运算、打印输出的全流程,一旦运行到末尾的return 0;就会立刻终止,临时创建的控制台窗口也会同步销毁。从输出内容打印到窗口销毁的间隔只有几毫秒,人眼根本来不及识别输出内容。
而VS Code内置终端是独立于你的程序常驻的,程序退出后终端不会关闭,所有输出都会保留在界面中,因此可以正常查看结果。

解决方法

不改代码的临时运行方式

不需要修改源码就能正常查看输出:

  • 打开.exe所在的文件夹
  • 按住Shift键在文件夹空白处点击右键,选择「在此处打开PowerShell窗口」或「在此处打开终端」
  • 在弹出的终端中输入.\[你的exe文件名].exe回车启动,输入完12个数字后即可看到输出,程序退出后终端不会自动关闭。

适配双击运行的代码修改

如果希望双击.exe也能停留显示结果,只需要在代码中return 0;语句前添加两行代码,让程序执行完逻辑后等待用户按键再退出即可:

cin.ignore(); // 清空之前输入残留在缓冲区的换行符
cin.get(); // 等待用户按下任意按键后再执行退出

额外代码优化提示:你当前代码中int matrix[n][m];的写法不属于标准C语法(标准C不支持使用变量作为数组长度的变长数组),仅在GCC等部分编译器的非标准扩展下可以编译通过,换用MSVC等其他编译器会直接报错,建议替换为固定长度数组或者vector容器存储矩阵内容。


原问题代码

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int n = 3, m = 4;
    int matrix[n][m];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> matrix[i][j];
        }
    };
    int col1[4];
    int col2[4];
    int col3[4];
    int col4[4];
    //создание 4 массивов-столбцов (creating 4 column arrays)
    for (int l = 0; l < n; l++)
    {
        for (int k = 0; k < m; k++)
        {
            if ((k % 4) == 0)
            {
                col1[l] = matrix[l][k];
            }
            else if (((k - 1) % 4) == 0)
            {
                col2[l] = matrix[l][k];
            }
            else if (((k - 2) % 4) == 0)
            {
                col3[l] = matrix[l][k];
            }
            else if (((k - 3) % 4) == 0)
            {
                col4[l] = matrix[l][k];
            }
        };
    };
    //поиск крайнего левого столбца только положительных чисел (finding the leftmost column of only positive numbers)
    int c = 0, s = 0;
    for (int g = 0; g < m; g++)
    {
        if (g == 0)
        {
            for (int d = 0; d < n; d++)
            {
                if (col1[d] <= 0)
                {
                    c++;
                }
            };
            if (c == 0)
            {
                s++;
                cout << "col 1";
                break;
            };
            c = 0;
        }
        else if (g == 1)
        {
            for (int d = 0; d < n; d++)
            {
                if (col2[d] <= 0)
                {
                    c++;
                }
            };
            if (c == 0)
            {
                s++;
                cout << "col 2";
                break;
            };
            c = 0;
        }
        else if (g == 2)
        {
            for (int d = 0; d < n; d++)
            {
                if (col3[d] <= 0)
                {
                    c++;
                }
            };
            if (c == 0)
            {
                s++;
                cout << "col 3";
                break;
            };
            c = 0;
        }
        else if (g == 3)
        {
            for (int d = 0; d < n; d++)
            {
                if (col4[d] <= 0)
                {
                    c++;
                }
            };
            if (c == 0)
            {
                s++;
                cout << "col 4";
                break;
            };
            c = 0;
        }
    };
    if (s == 0)
    {
        cout << "No positive columns";
    };
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:15:30