1008 数组元素循环右移问题 (20 分)——C语言实现
一、题目
输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
二、解析
分析题目后可以得出,可以用分部依次倒序输出来实现最终需求。
三、代码实现
#include <stdio.h>
void daoxu(int *array,int a,int b)
{
int i=0,j=0;
int tmp=0;
for(i=a,j=b;i<j;i++,j--)
{
tmp=array[i];array[i]=array[j];array[j]=tmp;
}
return;
}
int main(int argc, const char *argv[])
{
int i=0;
int n=0,m=0;
int array[102]={0};
scanf("%d %d",&n,&m);
m=m%n;
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
}
daoxu(array,0,n-m-1);
daoxu(array,n-m,n-1);
daoxu(array,0,n-1);
for(i=0;i<n;i++)
{
if(i==n-1)
{
printf("%d\n",array[i]);
break;
}
else
{
printf("%d ",array[i]);
}
}
return 0;
}
五、总结
常见题型,方法不唯一