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

C++实现求能被3整除的偶数平均值 代码运行错误排查求助

C++代码错误排查及修复方案

存在的问题

  • 变量未初始化:average函数中的计数变量count定义时未设置初始值0,程序运行时会读取该变量内存地址的随机值作为初始值,最终计数结果完全错误,平均值计算自然不符合预期。
  • 除零运行时异常:如果输入的所有数字都不满足「既是偶数、同时能被3整除」的条件,循环结束后count值为0,执行除法运算时会触发除零错误,直接导致程序崩溃退出。
  • 数组越界风险:主函数中定义的数组长度固定为100,但输入n时没有做合法性校验,若用户输入的n大于100,后续写入数组元素时会越界访问内存,触发不可预知的运行异常。

修复后完整代码

#include <iostream>
using namespace std;
void enterarray(int a[], int &n) { 
    cout << "please enter n: ";
    cin >> n;
    // 新增n的范围校验,避免数组越界
    while(n < 1 || n > 100) {
        cout << "n需在1~100范围内,请重新输入:";
        cin >> n;
    }
    for(int i = 0; i < n; i++)
        cin >> a[i];
}

double average(int a[100], int n)
{
    int t = 0, count = 0; // 初始化count为0
    for(int i = 0; i < n; i++)
        // 判断条件等价于a[i] % 6 == 0,两种写法均可
        if( a[i] % 2 == 0 && a[i] % 3 == 0) {
            t += a[i];
            count++;
        }
    // 新增除零判断,处理无符合条件数字的场景
    if(count == 0) {
        cout << "无符合条件的数字,平均值无意义,返回值:";
        return 0;
    }
    return t * 1.0 / count;
}

int main()
{
    int a[100];
    int n;
    enterarray(a, n);
    cout << average(a, n);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:04