设计函数void shift(int *array , int num , int size ) ;,实现将整型数组内元素循环向左移若干位置。循环向左移位含义如下:
比如,原始数组a[0],a[1]...a[9]内元素依次为:1 2 3 4 5 6 7 8 9 10,循环向左移1位后,则a[0],a[1]...a[9]内元素依次为:2 3 4 5 6 7 8 9 10 1,循环向左移2位后,则a[0],a[1]...a[9]内元素依次为:3 4 5 6 7 8 9 10 1 2。依次类推。
函数接口定义:
void shift(int *array , int num , int size ) ;
其中 array
、 num
和 size
都是用户传入的参数。 array
为指向原始数组的指针; num
为向左移的位数;size
为数组的大小。函数没有返回值。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
void shift(int *array , int num , int size ) ;
int main()
{
int i , n , p , array[100] ;
scanf(" %d%d" , &n , &p ) ;//测试用例保证0<p<n<=100
for( i = 0 ; i < n ; i++ )
scanf( "%d" , &array[i] ) ;//测试用例保证所有输入可以用整型存储
shift( array , p , n ) ;//向左移p位
for( i = 0 ; i < n - 1 ; i++ )
printf( "%d " , array[i] ) ;
printf( "%d\n" , array[i] ) ;
return 0;
}
/* 请在这里填写答案 */
输入样例:
10 1
1 2 3 4 5 6 7 8 9 10
输出样例:
2 3 4 5 6 7 8 9 10 1
代码如下:
void shift(int* array, int num, int size)
{
int i, j,xh;
for (i = 0; i < num; i++)
{
xh = array[0];
for (j = 0; j <= size - 2; j++)
array[j] = array[j + 1];
array[size - 1] = xh;
}
}