C++编写用户输入数组元素求和程序运行错误排查求助
代码错误排查及修正方案
现存错误列表
- 变量类型错误:
main函数中定义的arr是单个int类型变量,不是数组,无法存储多个元素,后续sizeof(arr) / sizeof(arr[0])的计算逻辑完全不成立。 - 缺少核心交互逻辑:没有实现用户输入数组长度的步骤,且动态长度的数组不能用
sizeof计算长度,该方法仅适用于编译时就确定大小的静态初始化数组。 - 数组越界写入错误:
Function函数中输入元素时写的是cin >> arr[Broi],每次都向数组下标等于总长度的位置写入(数组下标从0开始,最大合法下标是Broi-1),属于严重的越界操作,会引发内存异常。 - 语法/变量名错误:
main函数调用Function时,参数arr[]写法错误,只需传数组名即可;同时变量名大小写不匹配,你定义的长度变量是Broi,调用时写的是小写的broi,C++大小写敏感会直接编译报错。
修正后的可运行代码
推荐用更安全的std::vector实现,避免手动内存管理问题:
#include <iostream> #include <vector> using namespace std; int calculateSum(const vector<int>& arr) { int sum = 0; for (int num : arr) { sum += num; } return sum; } int main() { int n; cout << "请输入数组长度:"; cin >> n; vector<int> arr(n); cout << "请依次输入" << n << "个数组元素:" << endl; for (int i = 0; i < n; i++) { cin >> arr[i]; } cout << "数组元素总和为:" << calculateSum(arr) << endl; return 0; }
如果需要用原生数组实现,可参考以下版本:
#include <iostream> using namespace std; int sum(int arr[], int n) { int total = 0; for (int i = 0; i < n; i++) { total += arr[i]; } return total; } int main() { int n; cout << "请输入数组长度:"; cin >> n; // 动态分配长度为n的数组 int* arr = new int[n]; cout << "请依次输入" << n << "个数组元素:" << endl; for (int i = 0; i < n; i++) { cin >> arr[i]; } cout << "数组元素总和为:" << sum(arr, n) << endl; // 释放动态分配的内存,避免内存泄漏 delete[] arr; return 0; }
内容的提问来源于stack exchange,提问作者BerryTan
相关产品推荐
相关产品推荐

