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

#include <stdio.h> void print_num(int num) if(num==0)[ printf("0 "); return; } if (num < 0) { printf("%d ",num); return; } print_num(num / 10); printf("%d ", num % 10); } int main() { printf("Hello, World!\n"); return 0; }
这段代码定义了一个递归函数 `print_num`,意图是按顺序打印整数的每一位数字。但代码中存在语法错误和逻辑问题。

- 函数定义后缺少左花括号,第3行 `if(num==0)[` 使用了方括号 `[` 而不是花括号 `{`,这是语法错误。
- 递归逻辑中,对于正数,先递归调用 `print_num(num / 10)` 再打印 `num % 10`,这会导致数字从高位到低位依次输出。但负数的情况直接打印整个数,没有递归处理,导致负数无法逐位输出。

- 检查函数定义和条件语句的花括号是否使用正确。
- 思考负数如何也能像正数一样逐位输出,例如先处理负号,再递归处理绝对值。