在线编译器 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; }
这段代码的功能是:从用户输入一个字符串(最多99个字符),然后使用选择排序法(降序)对字符串中的字符进行排序,最后输出排序后的结果。

代码中有一个潜在的问题:`scanf("%s", &n)` 这里 `n` 本身已经是数组名(即首地址),不需要再加取地址符 `&`。虽然在某些编译器上可能不会报错,但这是不规范的写法。

- 检查 `scanf` 中 `&n` 的用法,思考数组名作为参数时是否应该加取地址符。
- 注意排序逻辑是降序(大的字符在前),确认这是否符合你的预期。