Online Compiler C

#include <stdio.h> unsigned int convert_to_base(int n,int p) { unsigned int x=0; unsigned int y=1; if(n==0) return 0; while(n>0) { int d=n%p; x+=d*y; y*=10; n=n/p;} return x} int main() { printf("%llu\n", convert_to_base(3,2); return 0; }
这段代码试图将一个十进制数转换为指定进制(p进制)的表示,并以十进制整数的形式返回结果。例如,convert_to_base(3,2) 期望输出二进制表示的 11(即十进制整数11)。但代码中存在语法错误和可能的逻辑问题。

- 第13行(return x})缺少分号,应改为 return x;。
- 第16行 printf 调用中缺少右括号,应改为 printf("%llu\n", convert_to_base(3,2));。
- printf 的格式说明符 %llu 用于 unsigned long long,但函数返回的是 unsigned int,应使用 %u 或匹配的类型。