You need to enable JavaScript to run this app. C语言求≤A且被B整除的最大数代码报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

C语言求≤A且被B整除的最大数代码报错如何解决?

C代码问题排查

第一段代码问题点

  • 存在无限死循环:内层while(B > 0)逻辑中没有修改B的值,只要输入的B为正整数,程序会永远卡在该循环中,最终触发运行超时/崩溃。
  • 逻辑错误:flag初始值设为1,当B>1时初始值本身就不满足被B整除的要求,结果会出错。
  • 冗余低效:完全不需要遍历1到A的所有值来匹配结果,算法复杂度为O(A),当A取值极大时会直接超时。
  • 输出格式错误:输入A后执行printf("\n")会额外输出换行符,在线判题系统对输出格式要求严格,多余字符会直接判定结果错误。

第二段代码问题点

  • 仍然存在多余输出:输入A后输出的空行会导致格式不符合判题要求,是答案错误的核心原因之一。
  • 边界场景无输出:当输入不满足A >= 1 && B >= 1 && A >= B的条件时,程序没有任何输出,不符合题目要求的必须输出结果的规则。
  • 逻辑冗余:不需要单独判断A % B == 0的分支,A - (A % B)本身就是符合要求的结果,余数为0时减0等价于直接输出A。
  • 格式符适配问题:部分OJ的Linux编译环境中,long long类型对应的输入输出格式符为%lld而非%lli,格式符不匹配也会导致读写值错误。

修复后参考代码

#include <stdio.h>

int main() {
    long long A, B;
    scanf("%lld %lld", &A, &B);
    printf("%lld\n", A - (A % B));
    return 0;
}

若判题环境为Windows,可将格式符替换为%lli即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 19:09:00