循环数组
作者: XXX 时间限制: 1S 章节: 函数
问题描述 :
编写程序,将一维数组中的元素向右循环移动N次。
输入说明 :
第一行整数n,表示数组大小为n
第二行,n个数,表示数组中的n个元素。
第三行,整数N,表示数组向右移动N次。
输出说明 :
移动后的数组元素,每两个元素之间以一个空格分隔。行首与行尾无多余空格。
输入范例 :
10
1 2 3 4 5 6 7 8 9 10
4
输出范例 :
7 8 9 10 1 2 3 4 5 6
#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
scanf("%d",&n);
int i;
int a[100];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int N;
scanf("%d",&N);
N=N%n;//当向右移的位数大于数字个数时,仍然有效
int b[100];
int j;
for(j=0,i=n-N;j<N,i<n;j++,i++){
b[j]=a[i];//将后N位数字存储到数组b中
}
for(i=n-1;i>=N;i--){
a[i]=a[i-N];//将前N位数向后移动N位
}
for(i=0,j=0;i<n-N,j<N;i++,j++){
a[i]=b[j];//将数组B中的N位数输入A中
}
for(i=0;i<n-1;i++){
printf("%d ",a[i]);
}
printf("%d",a[n-1]);
// system("pause");
}