参考代码:
public void backward1 () { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } int step = sc.nextInt(); //第一层:遍历前n-step个元素 //第二层:每遍历一个元素,就与后面step个元素相交换位置 for (int i = n-step-1; i >= 0; i--) { int x = step; for (int j = i; x-- > 0; j++) { int tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; } } for (int i = 0; i < n; i++) { System.out.println(arr[i]); } } public void backward2 () { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String str = sc.nextLine(); int step = sc.nextInt(); String res = str.substring(n-step)+str.substring(0,n-step-1); for (int i = 0; i < n; i++) { System.out.print(res.charAt(i)); } } public void backward3 () { int N =10; int[] a = new int[N]; Scanner s = new Scanner(System.in); System.out.println("请输入10个整数:"); for(int i=0; i<N; i++) { a[i] = s.nextInt(); } System.out.print("你输入的数组为:"); for(int i=0; i<N; i++) { System.out.print(a[i] + " "); } System.out.print("\n请输入向后移动的位数:"); int m = s.nextInt(); int[] b = new int[m]; for(int i=0; i<m; i++) { b[i] = a[N-m+i]; } for(int i=N-1; i>=m; i--) { a[i] = a[i-m]; } for(int i=0; i<m; i++) { a[i] = b[i]; } System.out.print("位移后的数组是:"); for(int i=0; i<N; i++) { System.out.print(a[i] + " "); } } public void backward4 () { System.out.println("输入n个整数,再输入m,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数"); //获取用户的输入,并解析为一个数组 Scanner sc = new Scanner(System.in); System.out.println("请直接输入数组元素,(以逗号作为间隔)"); String str = sc.next(); //分割用户输入得到一个字符串数组 String[] strs = str.split(",|,"); // 遍历这个字符串数组,将每个字符串解析为一个Integer,并装到Integer数组中 int[] nums = new int[strs.length]; int[] exchange = new int[nums.length]; int m = 0; try { for (int i = 0; i < strs.length; i++) { nums[i] = Integer.parseInt(strs[i]); } //新建一个长度一样的数组 System.out.println("原数组:" + Arrays.toString(nums)); //让用户输入m的值 System.out.println("请输入向后移动的位数m:"); m = sc.nextInt(); } catch (NumberFormatException e) { System.out.println("你输入有误,请输入数字,其它字符不支持"); } // 遍历两个数组,因为长度一样,所以一个for循环就足够 for (int i = 0; i < nums.length; i++) { // m个数前的情况 if (i < nums.length - m) { exchange[i + m] = nums[i]; } else if (i >= nums.length - m) { // 最后的m个数放到新数组的最前面 for (int j = 0; j < m; j++) { exchange[j] = nums[nums.length - m + j]; } // 转换完成,退出循环 break; } } // 输出转换后的结果 System.out.println("转换后:" + Arrays.toString(exchange)); } //取巧方法,不改变原数组,直接按需求打印 public void backward5 () { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr1 = new int[n]; for (int i = 0; i < n; i++) { arr1[i] = sc.nextInt(); } int m = sc.nextInt(); for (int i = 0; i < m; i++) { System.out.print(arr1[n - m + i] + " "); } for (int i = 0; i < n - m; i++) { System.out.print(arr1[i] + " "); } }
0.0分
0 人评分
九宫重排 (C++代码)浏览:1410 |
【数组的距离】 (C语言代码)浏览:787 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:1001 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1368 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:703 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:897 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:583 |
1124题解浏览:630 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:954 |