在线编译器 C

#include <stdio.h> unsigned int convert_to_base(int n, int p) { unsigned int result = 0; unsigned int multiplier = 1; if (n == 0) { return 0; } while (n > 0) { int digit = n % p; result += digi } } }
这段代码试图将一个整数转换为指定进制的表示,但代码不完整且有语法错误。

- 在 `result += digi` 这一行,变量名 `digi` 没有定义,应该是 `digit`,并且缺少了乘法和累加的逻辑。你需要将当前位的数字乘以对应的位权(即 `multiplier`)后加到 `result` 中,然后更新 `multiplier` 和 `n`。

- 循环中缺少了 `n = n / p;` 这一行,否则循环会无限执行,因为 `n` 的值永远不会改变。你需要每次循环后更新 `n` 为除以 `p` 的商。