Онлайн компилятор C

#include <stdio.h> unsigned int convert_to_base(int n, int p){ unsigned int num=0,sum=0; while(n>0){ if(i>0){ num=n%p; sum=sum*10+num; n=n/p; i--;} } return sum; } int main() { unsigned int x,y,answer; scanf("%u%u",&x,&y); answer = convert_to_base(x,y); printf("%u",answer); return 0; }
这段代码试图将一个十进制数转换为指定进制(p进制)的表示,并以十进制整数的形式返回结果。但代码中存在逻辑错误,导致无法正确运行。

- 变量 `i` 未定义就被使用,这会导致编译错误或未定义行为。你需要先声明并初始化 `i`。
- 循环条件 `while(n>0)` 内部又用 `if(i>0)` 控制,但 `i` 的值从未被更新,这会导致循环要么不执行,要么无限循环。思考一下:你真正需要控制循环次数的条件是什么?