这段代码试图将一个十进制数转换为指定进制的数,但逻辑有误。函数 `convert_to_base` 的意图是计算 `n` 在 `p` 进制下的表示,但实际计算过程不正确。 - 在循环中,`n = n % p` 这一行会导致 `n` 很快变成0,循环提前结束,无法正确处理所有位数。你应该用除法 `n = n / p` 来去掉已经处理过的最低位。 - 变量 `real = p - num` 看起来是想做某种补数运算,但进制转换不需要这个。正确的做法是直接记录每一位的余数 `num`,然后按顺序组合成结果。 检查你的循环条件和更新方式,以及组合数字的方法。