Online Compiler C

#include <stdio.h> int main() { int arr[12]; // 定义一个包含 12 个元素的数组 // 1. 读取 12 个元素存入数组 for (int i = 0; i < 12; i++) { if (scanf("%d", &arr[i]) != 1) { return 0; } } // 2. 翻转第一部分 (下标 0 到 3) for (int left = 0, right = 3; left < right; left++, right--) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } // 3. 翻转第二部分 (下标 4 到 7) for (int left = 4, right = 7; left < right; left++, right--) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } // 4. 翻转第三部分 (下标 8 到 11) for (int left = 8, right = 11; left < right; left++, right--) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } // 5. 用一个循环打印修改后的数组 for (int i = 0; i < 12; i++) { printf("%d", arr[i]); if (i < 11) { printf(" "); // 元素之间用空格隔开,最后一个元素后面不加空格 } } printf("\n"); return 0; }
这段代码的功能是:读取12个整数存入数组,然后将数组分成三个长度为4的段(下标0-3、4-7、8-11),分别对每个段进行逆序翻转,最后输出翻转后的数组。

代码逻辑是正确的,但有一个潜在问题需要注意:

- 输入读取部分使用了 `scanf`,如果输入不是整数(比如输入了字母),程序会直接返回0退出。这可能是你期望的行为,但通常更常见的做法是继续读取或给出提示。不过这不一定是错误,取决于题目要求。

- 翻转操作本身没有问题,三个循环分别处理了三个段,每个段内交换首尾元素直到中间位置。

- 输出格式也正确,在元素之间加空格,末尾换行。

整体来看,代码功能完整且正确。如果你遇到编译或运行问题,可以检查一下输入格式是否与代码匹配。