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

周日跑步时长统计C++程序结果异常及数组乱码问题求助

你的跑步时长统计代码问题分析与修复

嘿,我帮你排查出代码里的两个典型新手坑啦,这就给你拆解清楚:

问题1:数组出现随机无关数字的根源

你在输入跑步时长的循环里犯了个小失误——每次输入都只往times[0]里塞值,数组的其他位置(times[1]到times[4])根本没被赋值,这些内存区域原本就存着系统遗留的随机垃圾值,不管是打印校验还是后续比较,自然会出现莫名其妙的数字。

问题2:进步天数统计错误的原因

这个问题是两个小细节叠加的结果:

  1. 未初始化计数变量:nr_progress是局部变量,默认值是随机的,如果初始值碰巧是-1,那统计出来的结果就会少1,这就是你输入7 9 13 12 8时预期2却得到1的核心原因。
  2. 循环范围不对:你的数组有5个元素(索引0到4),需要对比4组相邻元素,但你写的for(int l=1; l<4; l++)只对比了前3组,虽然这个问题在你的测试用例里没直接影响结果,但如果输入后面有进步的情况就会出错,必须修正。

修正后的完整代码

// 程序接收按顺序记录周日跑步时长的数组,统计跑步时长超过前一天的天数
#include <iostream>
#include <iomanip>
using namespace std;

int main(){
    int nr_progress = 0; // 必须初始化计数变量,避免随机值干扰
    int times[5];
    
    cout << "请输入过去5个周日的跑步时长:" << flush;
    for(int i=0; i<5; i++){
        cin >> times[i]; // 用循环变量i对应数组索引,给每个位置正确赋值
    }
    
    // 循环范围改为l<5,覆盖所有4组相邻元素的对比
    for(int l=1; l<5; l++){
        if(times[l] > times[l-1]){
            nr_progress += 1;
        }
    }
    
    std::cout << "进步天数为:" << nr_progress << endl;
}

测试验证

当你输入7 9 13 12 8时:

  • 9>7 → 计数+1(当前1)
  • 13>9 → 计数+1(当前2)
  • 12<13 → 不计数
  • 8<12 → 不计数
    最终输出2,完全符合你的预期。同时数组的每个元素现在都会被正确赋值,打印校验也不会出现随机数字啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:39:04