任务描述
题目描述:有n
个整数,要求你编写一个函数使其向右循环移动m
个位置
输入
输入n m
表示有n
个整数,移动m
位
输出
输出移动后的数组
代码实现
#include<stdio.h>
int *solve(int *s,int n,int m) //移动后数据放入一个新的数组中
{
static int a[110];
int i=0,count,temp;
for(count=0;count<n;count++)
{
temp=i+n-m;
while(temp>n-1) //使temp恢复到n以内
temp-=n;
a[count]=*(s+temp); //使s数组按m的长度循环填入a数组
i++;
}
return a;
}
int main(void)
{
int n,m,s[110];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&s[i]);
int *ans;
ans = solve(s,n,m);
for(int i=0;i<n;i++){
if(i==0) printf("%d",*ans++ );
else printf(" %d",*ans++ );
}
return 0;
}
运行结果示例
输入
10 2
1 2 3 4 5 6 7 8 9 10
—— 预期输出 ——
9 10 1 2 3 4 5 6 7 8
—— 实际输出 ——
9 10 1 2 3 4 5 6 7 8