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

C++排序程序功能异常,请求修复并添加错误说明注释

修复后的C++排序程序及错误说明

错误分析

  • 输入数据丢失:原代码中v.push_back(input);写在for循环外面,循环里仅读取了输入值但未存入vector,最终vector只保留了最后一次输入的数值,前面的输入全部丢失。
  • 数组越界访问:输出时用limit作为循环次数,但vector实际元素数量远小于limit,访问v[i]会触发未定义行为(比如输出乱码或程序崩溃)。
  • 字符串格式不规范:cout输出的字符串直接换行,不符合C++字符串书写规范,建议用\n实现换行。

修复后的代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int limit, input;
    vector<int> v;

    cout << " Enter the limit : ";
    cin >> limit;
    cout << "Enter the numbers for array :\n";
    
    // 修复:将push_back放入循环内,每次读取后立即添加到vector
    for (int i = 0; i < limit; i++)
    {
        cin >> input;
        v.push_back(input); // 每次输入的数都存入vector
    }

    cout << "Sorting the array :\n";
    sort(v.begin(), v.end()); // 对vector内所有元素排序
    cout << "Array numbers :\n";
    
    // 修复:用vector的size()作为循环上限,避免越界
    for (int i = 0; i < v.size(); i++)
    {
        cout << v[i] << " ";
    }
    cout << endl; // 最后换行,输出更整洁

    // 也可以用迭代器输出(可选)
    // for (vector<int>::const_iterator iter = v.begin(); iter != v.end(); ++iter)
    // {
    //     cout << *iter << " ";
    // }
    // cout << endl;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:20:26