在循环中对数组`a`进行赋值,然后在后面的`for`循环中进行翻转。当`n`为奇数时,中间的元素会被翻转两次。所以需要将`for`循环的条件改为`i < n/2`,这样就可以避免对中间元素进行多余的翻转。
下面是修改后的代码:
```c
#include <stdlib.h>
#include <stdio.h>
int main()
{
int a[10];
int num;
int i = 0;
int n = 0;
int temp = 0;
while (scanf("%d", &num) != EOF && num != -1 && i < 10)
{
a[i] = num;
i++;
}
n = i;
for (i = 0; i < n/2; i++)
{
temp = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = temp;
}
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
```
主要是一开始没注意到n的问题,当然这个逆序打印还有更简单的方式,之所以这样打是因为题目需要。