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

如何使用循环从文件中读取数据并查找id的最大和最小值

问题原因

你的代码核心问题是使用了else if串联最大、最小id的判断逻辑,两个判断不是独立执行的:当某条id满足大于当前最大值的条件时,程序就会跳过最小id的判断分支,不会将该id和当前最小值做比较。
举个最简单的场景:如果读取的id序列是10, 20, 30, 40(所有id递增),那么每次循环都会命中id > largestId的分支,永远不会执行最小id的判断,smallestId会一直停留在初始的99999,不会更新为实际的最小值10。

修复方案

把else if改为独立的if语句,保证每次循环都会同时判断最大、最小值。同时建议不要写死初始值,避免id取值范围超出预设初始值的问题:

// 可引入头文件#include <limits>使用类型极限值做初始化,适配所有合法id范围
int largestId = std::numeric_limits<int>::min();
int smallestId = std::numeric_limits<int>::max();
while(theFile >> firstName >> lastName >> id)
{
   if(id > largestId){
            largestId = id;
   }
   if(id < smallestId){
            smallestId = id;
   }
}

如果你不想引入额外头文件,也可以在第一次读取到id的时候同时给两个变量赋值:

bool isFirst = true;
int largestId, smallestId;
while(theFile >> firstName >> lastName >> id)
{
   if(isFirst){
       largestId = id;
       smallestId = id;
       isFirst = false;
       continue;
   }
   if(id > largestId){
            largestId = id;
   }
   if(id < smallestId){
            smallestId = id;
   }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:36:01