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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:03