Online Compiler C

#include <stdio.h> int main() { char n[100]; scanf("%s", &n); for (int i = 0; n[i] != '\0'; i++) { for (int j = i + 1; n[j != '\0']; j++) { if (n[i] < n[j]) { int temp = n[i]; n[i] = n[j]; n[j] = temp; } } } for (int i = 0; n[i] != '\0'; i++) { printf("%s", n[i]); } return 0; }
这段代码试图对输入的字符串进行降序排序(从大到小),但存在几个问题。

- 内层循环的条件 `n[j != '\0']` 写错了,应该是 `n[j] != '\0'`。这个错误会导致循环条件判断错误,可能无法正确遍历字符串。
- 最后的输出使用了 `printf("%s", n[i])`,但 `%s` 用于输出字符串,而 `n[i]` 是单个字符,应该用 `%c` 来输出字符。

- 检查内层循环的条件,确保正确比较 `n[j]` 是否等于结束符。
- 修改输出格式,将 `%s` 改为适合单个字符的格式。