else {
System.out.println(\
截取从右端开始的4~7位是:
\ } }
【程序33】
* 作者 若水飞天
题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 */
/*
* 网上千篇一律是这种写法,我也没有什么创新,
* a[i][j]=a[i-1][j]+a[i-1][j-1] 就是这个程序的核心
* 定义的是二维数组,为了使输出的结果看起来漂亮一点
* 可以用for(int k=0; k<2*(10-i)-1; k++)控制输出的空格 * 这个循环是在控制行数的循环里面,控制列数的循环外面。 * 记得在输出菱形时为了控制下半部分的输出,在下拼命的写出 * for(int k=1; k<=WIDTH-2*i-1; k++) 才算了事。 */
package cn.com.flywater.FiftyAlgorthm; public class Thirty_thirdYangTriangle { public static void main(String[] args) {
int[][] a = new int[10][10]; for(int i=0; i<10; i++) { a[i][i] = 1; a[i][0] = 1; }
for(int i=2; i<10; i++) { for(int j=1; j
a[i][j] = a[i-1][j-1] + a[i-1][j]; } }
for(int i=0; i<10; i++) {
for(int k=0; k<2*(10-i)-1; k++) { System.out.print(\ }
26
for(int j=0; j<=i; j++) {
System.out.print(a[i][j] + \ \ }
System.out.println(); } }
}
/*【程序34】
* 作者 若水飞天
题目:输入3个数a,b,c,按大小顺序输出。 1.程序分析:利用指针方法。 */
/*
* 可惜,Java好像没有指针
*/
package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;
public class Thirty_forthCompare {
public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = s.nextInt(); int b = s.nextInt(); int c = s.nextInt();
if(a < b) { int t = a; a = b; b = t; }
if(a < c) { int t = a; a = c; c = t; }
if(b < c) { int t = b; b = c; c = t; }
System.out.println(\从大到小的顺序输出:\ System.out.println(a + \
27
}
}
/*【程序35】 * 作者 若水飞天
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 **/
package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner; public class Thirty_fifthSwop {
static final int N = 8;
public static void main(String[] args) {
int[] a = new int [N];
Scanner s = new Scanner(System.in); int index1 = 0, index2 = 0;
System.out.println(\ for(int i=0; i System.out.print(a[i] + \ } int max =a[0], min = a[0]; for(int i=0; i if(a[i] < min) { min = a[i]; index2 = i; } } if(index1 != 0) { int temp = a[0]; a[0] = a[index1]; a[index1] = temp; } if(index2 != a.length-1) { int temp = a[a.length-1]; a[a.length-1] = a[index2]; 28 a[index2] = temp; } System.out.println(\ for(int i=0; i } /*【程序36】 * 作者 若水飞天 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 **/ /* * 这个题不知道有什么好办法,比较直接方法的是把这个数组分成两个数组, * 再将两个数组合起来,但如果不控制好数组的下标,就会带来很多麻烦。 */ package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner; public class Thirty_sixthBackShift { public static final int N =10; public static void main(String[] args) { int[] a = new int[N]; Scanner s = new Scanner(System.in); System.out.println(\ for(int i=0; i } System.out.println(\ int m = s.nextInt(); int[] b = new int[m]; int[] c = new int[N-m]; for(int i=0; i for(int i=m,j=0; i for(int i=0; i 29 for(int i=m,j=0; i for(int i=0; i } } /*【程序37】 * 作者 若水飞天 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **/ /* * 这个程序是完全抄别人的 */ package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner; public class Thirty_sevenCount3Quit { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(); boolean[] arr = new boolean[n]; for(int i=0; i arr[i] = true;//下标为TRUE时说明还在圈里 } int leftCount = n; int countNum = 0; int index = 0; while(leftCount > 1) { if(arr[index] == true) {//当在圈里时 countNum ++; //报数递加 if(countNum == 3) {//报道3时 countNum =0;//从零开始继续报数 arr[index] = false;//此人退出圈子 leftCount --;//剩余人数减一 } } index ++;//每报一次数,下标加一 30