在线编译器 C

#include <stdio.h> int main() { char m[1001]; int sum=0,t=0; for(int i=0;m[i]!='\0';i++){ sum++; } for(int i=0;i<sum/2;i++){ int temp=m[sum-i-1]; m[sum-i-1]=m[i]; m[i]=temp; } for(int i=0;i<sum;i++){ printf("%d",m[i]); } return 0; }
这段代码试图反转一个字符数组并打印,但存在几个问题。

首先,数组 `m` 没有被初始化,也没有输入任何数据,所以它里面是未定义的值。代码中第一个循环用 `m[i]!='\0'` 来统计长度,但数组未初始化,这个条件可能永远不成立或提前结束,导致 `sum` 的值不可预测。

其次,反转后的打印使用了 `%d` 格式符,这会打印字符的ASCII码数值,而不是字符本身。

- 你需要先给数组 `m` 输入字符串,例如使用 `scanf` 或 `gets`。
- 统计字符串长度应该使用 `strlen` 函数(需要包含 `<string.h>`),或者先输入再手动统计。
- 打印字符时应该用 `%c` 而不是 `%d`。