题目:一个数组有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。要求从控制台定义数组长度,并从控制台输入数据及顺序后移的位数。【位数不超过数组长度】
1package test; 2 3import java.util.Scanner; 4 5public class Pratice4 { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 Scanner scanner = new Scanner(System.in); 10 System.out.println("请输入数组的长度:"); 11 //接收控制输入的数组长度 12 int length = scanner.nextInt(); 13 //定义一个长度为length的数组,用来存放元素 14 int[] a = new int[length]; 15 for(int i=0;i<length;++i) { 16 System.out.println("请输入第"+(i+1)+"个整数:"); 17 //元素存放数组中 18 a[i] = scanner.nextInt(); 19 } 20 //增强for循环输出数组元素 21 System.out.print("你输入的数组为:"); 22 for (int i:a) { 23 System.out.print(i + " "); 24 } 25 System.out.print("\n请输入向后移动的位数:"); 26 int run = scanner.nextInt(); 27 //定义一个辅助数组 28 int[] b = new int[run]; 29 for (int i = 0; i < run; i++) { 30 b[i] = a[length - run + i]; 31 } 32 for (int i = length - 1; i >= run; i--) { 33 a[i] = a[i - run]; 34 } 35 for (int i = 0; i < run; i++) { 36 a[i] = b[i]; 37 } 38 System.out.print("位移后的数组是:"); 39 for (int i = 0; i < length; i++) { 40 System.out.print(a[i] + " "); 41 } 42 43 } 44 45} 46输出: 47请输入数组的长度: 488 49请输入第1个整数: 509 51请输入第2个整数: 5212 53请输入第3个整数: 546 55请输入第4个整数: 563 57请输入第5个整数: 587 59请输入第6个整数: 605 61请输入第7个整数: 621 63请输入第8个整数: 6416 65你输入的数组为:9 12 6 3 7 5 1 16 66请输入向后移动的位数:4 67位移后的数组是:7 5 1 16 9 12 6 3
