java实现有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

如题所述

错误一修改:

printf("%d",a[i]);

错误二修改:

void move(int a[],int n,int m)

{

int t[N];

int i,j=0;

for(i=n-m;i<n;i++) //把后面的取出放到t中

t[j++]=a[i]

for(i=0; i<n-m; i++) //前面的后移

a[i+m]=a[i];

for(i=0;i<m;i++) //把t中的放到前面

a[i]=t[i];

}

扩展资料:

注意事项

调用自定义后移函数move(int *a, int n, int m)来进行循环移位,对n(n<20)个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,如下: n=10, m=3时:输入:1 2 3 4 5 6 7 8 9 10,输出:8 9 10 1 2 3 4 5 6 7

Input

输入多组测试数据,每组先输入n(n < 20)和m(m < n),再输入n个整数。

Output

输出循环移动m个数后的序列,数据间空格隔开。

Sample Input

10 4

1 2 3 4 5 6 7 8 9 10

7 2

1 2 3 4 5 6 7

Sample Output

7 8 9 10 1 2 3 4 5 6

6 7 1 2 3 4 5

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-19
x<<y 是用于二进制移位,表示数字 x*(2的y次方)。这里不能这么用
可以先将这n个整数的前n-m个数放入数组,然后将最后m个数再放入另一个数组。
俩数组交换位置合并就行了追问

能给一下代码吗

第2个回答  2012-12-19
使用数组啊
第3个回答  2012-12-21
public void chageNum(int m,int n)
int[] arr=new int[m];
int newarr=new int[m+n];
for(int i=0;i<=arr.length;i++)
{
newarr[i+n]=arr[i];
}
for(int j=0,j<n;j++){
newarr[j]=newarr[newarr.length-1-j];
}

}来自:求助得到的回答本回答被提问者采纳
第3个回答  2012-12-21
当然是用<<了。
相似回答