ZZULIOJ 1162: 迴圈移動(指標專題)
阿新 • • 發佈:2018-11-30
題目描述有n個整數,使前面各數順序向後移動k個位置,移出的數再從開頭移入。輸出移動後的陣列元素。
題目沒有告訴你n的範圍,希望你讀入n之後用malloc()函式動態申請記憶體空間,不要提前定義陣列的大小。不要偷懶哦。
另外要求定義並使用函式ringShift()
void ringShift(int *a, int n, int k)
{
//迴圈移動後的數值仍然存入陣列a中
}
輸入輸入分3行,第一行是一個整數n,第二行是n個整數,用空格隔開。第三行是一個整數k。
輸出輸出n個整數,由空格隔開。輸出佔一行。
樣例輸入6
1 2 3 4 5 6
2
樣例輸出5 6 1 2 3 4
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
void ringShift(int *a,int n,int k);
int main(){
int n,k,i;
cin>>n;
int* a=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
cin>>*(a+i);
cin>>k;
ringShift(a,n,k);
return 0;
}
void ringShift(int *a,int n,int k){
int* b=(int *)malloc(sizeof(int)*n);
int i;
for(i=0;i<k;i++){
b[i]=a[n-k+i];
}
int c=0;
for(i=k;i<n;i++){
b[i]=a[c++];
}
for(i=0;i<n;i++){
printf("%d ",b[i]);
}
}