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
相关产品推荐
相关产品推荐

