設一個數組中有n個數,將前面各個數順序向後移動m個位置,移出的數再從頭開始移入;
編碼如下:
/*將數組中的數向後移動n位,移出的部分再移入頭部*/
void chapter1::moveArray(int a[], int alength, int moveLength)
{
for (int i =0;i<moveLength;i++)
{
int lastitem = a[alength-1];
for (int j = alength -1;j>0;j--)
{
a[j] = a[j - 1];
}
a[0] = lastitem;
}
}
/*有n個整數, 使前面各數順序向後移m個位置, 移出的數再從開頭移入。 編寫一個函數實現以上功能, 在主函數中輸入n個整數並輸出調整後的n個數*/
void chapter1::moveN()
{
printf_s("移動數測試開始\r\n");
printf_s("輸入數組大小n");
int n;
scanf_s("%d",&n);
int *arraydata = (int*)calloc(n, sizeof(int));
for(int i=0;i<n;i++)
{
printf_s("請輸入第%d個數\r\n",i);
scanf_s("%d", &arraydata[i]);
}
printf_s("請輸入移動位數\r\n");
int m;
scanf_s("%d", &m);
moveArray(arraydata, n, m);
for (size_t i = 0; i < n; i++)
{
printf_s("第%d個數:%d\r\n",i,arraydata[i]);
}
}