Online Compiler C

#include <stdio.h> unsigned int convert_to_base(int n, int p) { while ( n >= 0) { int octatok, o10 = 1, cymma = 0; octatok = n%p; cymma = octatok * o10; n /= p; o10 *= 10; } return cymma; } int main() { int a, b; scanf ("%d%d" , &a,&b ); printf("%d%d", convert_to_base(a,b)); return 0; }
这段代码试图将一个整数转换为指定进制的表示,并以十进制整数的形式返回。但代码中存在几个问题,导致它无法正确工作。

- 在 `convert_to_base` 函数中,变量 `cymma` 是在 `while` 循环内部定义的,循环每次迭代都会重新定义它,导致最终返回时 `cymma` 的值是最后一次循环中计算的值,而不是累积的结果。你需要思考如何让变量在循环外部定义并累积结果。

- `main` 函数中的 `printf` 使用了两个 `%d` 格式符,但只传递了一个参数 `convert_to_base(a,b)`,这会导致未定义行为。你需要检查 `printf` 的格式字符串和参数数量是否匹配。