c语言 有n个整数。使前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。 输入:两行,第1行第一个元素是元素个数,然后依次输入数组元素,元素之间用空格分隔;第2行一个整数,表示右移的位数。 输出:一行,移位的结果,用一个空格隔开,末尾无空格。 【输入输出样例】 输入: 5 1 2 3 4 5 3 输出: 3 4 5 1 2
时间: 2024-02-27 16:57:15 浏览: 58
python 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数(示例)
这是一个比较基础的数组操作题,可以先将前 n-m 个元素逆序,再将后 m 个元素逆序,最后将整个数组逆序即可。以下是对应的函数实现:
```c
void fun(int *p, int n, int m) {
int i, j, tmp;
// 将前 n-m 个元素逆序
for (i = 0, j = n - m - 1; i < j; i++, j--) {
tmp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = tmp;
}
// 将后 m 个元素逆序
for (i = n - m, j = n - 1; i < j; i++, j--) {
tmp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = tmp;
}
// 将整个数组逆序
for (i = 0, j = n - 1; i < j; i++, j--) {
tmp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = tmp;
}
}
```
使用时,先读入 n 和所有数字,然后调用该函数进行移位,最后输出结果:
```c
int main() {
int n, m, i;
int nums[100];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
scanf("%d", &m);
fun(nums, n, m);
for (i = 0; i < n; i++) {
printf("%d", nums[i]);
if (i != n - 1) {
printf(" ");
}
}
printf("\n");
return 0;
}
```
希望能够对你有所帮助!
阅读全文