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

C++中及格计数正常但不及格计数始终显示12,如何排查修复?

问题分析与修复方案

你的代码核心问题是局部变量未初始化:pass_count和fail_count作为函数内的局部变量,声明时未赋予初始值0,C++中局部变量默认会携带随机的垃圾值。你看到不及格计数始终是12,只是本次运行时fail_count的初始垃圾值刚好为12,实际每次运行结果都可能出现随机偏差(及格计数看似正常也只是巧合)。

修复要点

  1. 声明计数变量时直接初始化为0,确保统计从0开始累加
  2. 函数声明返回string但实际无返回值,会触发未定义行为,需将返回类型改为void

修改后的完整代码

#include <iostream>
#include <sstream>
#include <string>
   
using namespace std;
 
void passAndFailCount(string grades){
  int pass_count = 0;
  int fail_count = 0;
  istringstream myStream(grades);
  string grade;
  while(myStream>>grade){
    int i_grade=stoi(grade);
    if (i_grade>=55){
      ++pass_count;
    }
    else{
      ++fail_count;
    }
  }
  cout<<"Pass: "<<pass_count<<endl<<"Fail: "<<fail_count<<endl;
}

int main()
{
  string grades;
  getline(cin, grades);
  passAndFailCount(grades);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:35:36