这段代码试图将一个十进制数转换为以另一个数为基数的表示,并以十进制形式输出结果。但代码中存在几个问题。 - 在 `convert_to_base` 函数中,`while ( n >= 0)` 会导致无限循环,因为当 `n` 变为 0 时条件仍然成立,而 `n /= p` 会让 `n` 一直保持为 0。你应该考虑循环何时应该停止。 - 在循环内部,`cymma = octatok * o10;` 这一行每次都会覆盖 `cymma` 的值,而不是累加。你需要将新的位值加到已有的结果上。 - 在 `main` 函数中,`printf` 的格式字符串 `"%u%u"` 对应两个参数,但你只传了一个参数 `convert_to_base(a,b)`。这会导致未定义行为。 - 检查循环条件,思考当 `n` 变为 0 时是否应该继续循环。 - 检查累加结果的赋值语句,确保每次循环都将新的位值加到 `cymma` 上,而不是替换它。