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

#include <stdio.h> unsigned int to_binary(int n) { if (n <= 1) { return ("%u", n); } to_binary(n / 2); return (n % 20); } int main() { sum_to_n(5); printf("%d", sum_to_n(5)); return 0; }
这段代码试图将一个整数转换为二进制表示,但存在多个问题。`to_binary`函数使用了错误的语法和逻辑,`main`函数中调用了未定义的`sum_to_n`函数。

- `to_binary`函数中`return ("%u", n)`的写法是错误的。逗号表达式会返回最后一个值,但这里用括号包裹字符串和变量,实际返回的是`n`,但类型不匹配且逻辑混乱。递归调用`to_binary(n / 2)`后没有处理返回值,导致结果丢失。`return (n % 20)`中的`20`应该是`2`,这是二进制转换的关键错误。

- `main`函数中调用了`sum_to_n`,但代码中并没有定义这个函数。你需要检查是否应该调用`to_binary`,并确保函数名正确。