在线编译器 C

#include <stdio.h> int main() { int a[10]; int temp; for(int i=0;i<10;i++){ scanf("%d",&a[i]); } for(int i=0, j=4;i<j;i++,j--){ temp=a[i]; a[i]=a[j]; a[j]=temp; } for(int i=5,j=9;i<j;i++,j--){ temp=a[i]; a[i]=a[j]; a[j]=temp; } for(int i=0;i<10;i++){ printf("%d ",a[i]); } return 0; }
这段代码的作用是:先读入10个整数存入数组,然后将数组分成前5个元素和后5个元素两部分,分别对每部分进行逆序操作,最后输出整个数组。

代码逻辑上存在一个潜在问题:当数组长度为偶数时,两部分的分界点处理需要特别注意。

- 第一个循环 `for(int i=0, j=4;i<j;i++,j--)` 正确地将前5个元素(索引0到4)逆序。
- 第二个循环 `for(int i=5,j=9;i<j;i++,j--)` 正确地将后5个元素(索引5到9)逆序。
- 但注意,如果数组长度是奇数,这种分两部分逆序的方式可能不符合某些题目的要求。你的代码目前处理的是偶数长度10,所以没有问题。