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

C++中取模运算符(%)的正确用法及巴士空位计算问题求解

解决巴士空座位计算的取模使用问题

嘿,我完全懂你现在的困惑!首先要告诉你:你对取模运算符%的核心理解是对的——它确实会返回两个数相除后的余数(比如16%3=1这个例子完全正确)。问题出在你把余数直接当成了空座位数,而没有结合巴士容量做转换。

咱们拿示例输入126来拆解:

  • 巴士一次载50人,126除以50,商是2(也就是前2辆车载了100人),余数是26——这个余数是最后一辆车需要搭载的乘客数,而不是空座位数。
  • 最后一辆车的空座位数,应该是巴士总容量减去这个载客数:50-26=24,这才是符合预期的结果。

你之前的代码直接输出了余数stop%bus,自然和预期不符。这里给你两种正确的写法:

写法1:带条件判断,逻辑更直观

int bus = 50;
int stop;
cin >> stop;
int remainingPassengers = stop % bus;
// 如果余数为0,说明刚好坐满,空座位是0;否则用容量减余数
int emptySeats = (remainingPassengers == 0) ? 0 : (bus - remainingPassengers);
cout << emptySeats;
return 0;

写法2:用取模简化判断,代码更简洁

int bus = 50;
int stop;
cin >> stop;
// 当总人数是50的倍数时,(bus - 0) % bus会得到0,刚好符合空座位为0的情况
cout << (bus - (stop % bus)) % bus;
return 0;

再给你验证几个场景:

  • 输入150(刚好3辆满座):150%50=0,(50-0)%50=0,输出0,正确。
  • 输入50:输出0,正确。
  • 输入77:77%50=27,50-27=23,输出23,正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:49:08