题目:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
思路一:使用一个数组记录原数据 使用另一个数组记录改动后的数据
两组数据的顺序规律为:更改后的数据的位次=(更改之前的位次+位移量)/数据总量
以下代码可以满分通过acm训练系统
//baizhen
#include <stdio.h>
void tiaozheng(int a[],int b[],int c,int d);
void tiaozheng(int a[],int b[],int c,int d)
{
for(int i=0;i<c;i++)
b[(i+d)%c]=a[i];
}
int main(void)
{
int a[100],b[100],count=0,change=0;
scanf("%d",&count);
for(int i=0;i<count;i++)
scanf("%d",&a[i]);
scanf("%d",&change);
tiaozheng(a,b,count,change);
for(int i=0;i<count;i++)
printf("%d ",b[i]);
return 0;
}
思路二:将排位向前变化的先打印,排位向后变化的后打印
以下代码可以满分通过acm训练系统
//baizhen
#include <stdio.h>
int main(void)
{
int a[100],count,change,i;
scanf("%d",&count);
for(int i=0;i<count;i++)
scanf("%d",&a[i]);
scanf("%d",&change);
for(int i=count-change;i<count;i++)
printf("%d ",a[i]);
for(int i=0;i<count-change;i++)
printf("%d ",a[i]);
return 0;
}