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

#include <stdio.h> void reverse_array(int *a, int n){ for(int i=0;i<n/2;i++){ a[i]=a[n-i-1]; } for(int i=0;i<n;i++){ printf("%c",a[i]); } } int main() { int a[5]={1,2,3,4,5}; reverse_array(a,5); return 0; }
这段代码试图反转一个整数数组并打印结果,但存在逻辑错误。

- 在 `reverse_array` 函数的第一个循环中,你只把后半部分的值复制到了前半部分,但没有保存前半部分的值,导致前半部分被覆盖丢失。例如,当 `i=0` 时,`a[0]` 被赋值为 `a[4]`,但原来的 `a[0]` 没有被保存,所以之后无法正确放到 `a[4]` 的位置。
- 另外,你使用 `%c` 打印整数数组,这会把整数当作 ASCII 字符输出,而不是数字本身。应该用 `%d` 来打印整数。