在线编译器 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("%c", n[i]); } return 0; }
这段代码试图将输入的字符串按字符降序排序(从大到小),然后输出排序后的结果。代码整体思路正确,但存在一个语法错误。

- 第8行内层for循环的条件部分 `n[j]!= '\0']` 多了一个右方括号 `]`,这会导致编译错误。检查这一行的括号匹配。
- 另外,`scanf` 读取字符串时,`n` 本身已经是数组首地址,不需要取地址 `&n`,虽然这里不会导致运行时错误,但写法不规范。