2.输入10个整数,用一个数组存储,然后调用具有指针参数的函数,实现将其中每个数的位置循环后移4位。学号为奇数做1;学号为偶
时间: 2024-03-26 21:41:01 浏览: 46
好的,这个问题需要先确定每个人的学号,然后再根据学号的奇偶性来确定要移动的距离。以下是代码实现:
```c
#include <stdio.h>
void shift(int *arr, int len, int offset) {
int temp[offset];
for (int i = 0; i < offset; i++) {
temp[i] = arr[i];
}
for (int i = offset; i < len; i++) {
arr[i-offset] = arr[i];
}
for (int i = len-offset; i < len; i++) {
arr[i] = temp[i-len+offset];
}
}
int main() {
int arr[10];
printf("输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < 10; i++) {
int id = i + 1;
int offset = id % 2 == 0 ? 4 : 1;
shift(arr, 10, offset);
}
printf("移动后的结果为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序中,`shift` 函数用来将数组中每个数的位置循环后移 `offset` 位。在 `main` 函数中,我们使用一个循环来依次处理每个人的学号。对于学号为奇数的人,我们将 `offset` 设置为 1,表示将每个数的位置循环后移 1 位;对于学号为偶数的人,我们将 `offset` 设置为 4,表示将每个数的位置循环后移 4 位。最后输出移动后的结果。
希望这个程序能够帮到你!
阅读全文