在线编译器 C

#include <stdio.h> int main() { int arr[10]; // 定义一个包含 10 个元素的数组 // 1. 读取 10 个元素存入数组 for (int i = 0; i < 10; i++) { if (scanf("%d", &arr[i]) != 1) { return 0; // 读取失败则提前结束 } } // 2. 翻转前半部分 (下标 0 到 4) // 使用双指针:left 从 0 开始往后,right 从 4 开始往前 for (int left = 0, right = 4; left < right; left++, right--) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } // 3. 翻转后半部分 (下标 5 到 9) // 使用双指针:left 从 5 开始往后,right 从 9 开始往前 for (int left = 5, right = 9; left < right; left++, right--) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } // 4. 用一个循环打印修改后的数组 for (int i = 0; i < 10; i++) { printf("%d", arr[i]); if (i < 9) { printf(" "); // 元素之间用空格隔开,最后一个元素后面不加空格 } } printf("\n"); // 规范输出换行 return 0; }
这段代码的功能是:读取10个整数存入数组,然后将数组的前半部分(下标0-4)和后半部分(下标5-9)分别进行翻转,最后输出翻转后的数组。

代码整体思路正确,但有一个关键问题需要注意:

- 题目要求可能是将整个数组翻转,而不是分别翻转前后两半。你的代码将数组分成两段各自翻转,这会导致最终结果与整体翻转不同。例如,输入1 2 3 4 5 6 7 8 9 10,你的代码会输出5 4 3 2 1 10 9 8 7 6,而整体翻转应该是10 9 8 7 6 5 4 3 2 1。

- 如果题目确实要求分别翻转前后两半,那么你的代码是正确的。但通常这类练习是要求整体翻转数组。请确认题目要求是整体翻转还是分段翻转。