【程序31】
题目:将一个数组逆序输出。
程序分析:用第一个与最后一个交换。
public class Prog31{ public static void main(String[] args){ int[] A = new int[]{1,2,3,4,5,6,7,8,9,}; print(A); System.out.println(); int[] B = reverse(A); print(B); } private static int[] reverse(int[] A){ for(int i=0;i<A.length/2;i++){ int temp = A[A.length-i-1]; A[A.length-i-1] = A[i]; A[i] = temp; } return A; } private static void print(int[] A){ for(int i=0;i<A.length;i++) System.out.print(A[i]+" "); } } |
【程序32】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
import java.util.Scanner; public class Prog32{ public static void main(String[] msg){ //输入一个长整数 Scanner scan = new Scanner(System.in); long l = scan.nextLong(); scan.close(); //以下截取字符 String str = Long.toString(l); char[] ch = str.toCharArray(); int n = ch.length; if(n<7) System.out.println("输入的数小于7位!"); else System.out.println("截取的4~7位数字:"+ch[n-7]+ch[n-6]+ch[n-5]+ch[n-4]); } } |
【程序33】
题目:打印出杨辉三角形(要求打印出10行如下图)
程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
public class Prog33{ public static void main(String[] args){ int[][] n = new int[10][21]; n[0][10] = 1; for(int i=1;i<10;i++) for(int j=10-i;j<10+i+1;j++) n[i][j] = n[i-1][j-1]+n[i-1][j+1]; for(int i=0;i<10;i++){ for(int j=0;j<21;j++){ if(n[i][j]==0) System.out.print(" "); else{ if(n[i][j]<10) System.out.print(" "+n[i][j]);//空格为了美观需要 else if(n[i][j]<100) System.out.print(" "+n[i][j]); else System.out.print(n[i][j]); } } System.out.println(); } } } |
【程序34】
题目:输入3个数a,b,c,按大小顺序输出。
程序分析:利用指针方法。
import java.util.Scanner; public class Prog34{ public static void main(String[] args){ System.out.print("请输入3个数:"); Scanner scan = new Scanner(System.in).useDelimiter("\\s"); int a = scan.nextInt(); int b = scan.nextInt(); int c = scan.nextInt(); scan.close(); 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(a+" "+b+" "+c); } } |
【程序35】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
import java.util.Scanner; public class Prog35{ public static void main(String[] args){ System.out.print("请输入一组数:"); Scanner scan = new Scanner(System.in).useDelimiter("\\s"); int[] a = new int[50]; int m = 0; while(scan.hasNextInt()){ a[m++] = scan.nextInt(); } scan.close(); int[] b = new int[m]; for(int i=0;i<m;i++) b[i] = a[i]; for(int i=0;i<b.length;i++) for(int j=0;j<b.length-i-1;j++) if(b[j]<b[j+1]){ int temp = b[j]; b[j] = b[j+1]; b[j+1] = temp; } for(int i=0;i<b.length;i++) System.out.print(b[i]+" ");
} } |
【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
import java.util.Scanner; public class Prog36{ public static void main(String[] args){ final int N = 10; System.out.print("请输入10个数的数组:"); Scanner scan = new Scanner(System.in); int[] a = new int[N]; for(int i=0;i<a.length;i++) a[i] = scan.nextInt(); System.out.print("请输入一个小于10的数:"); int m = scan.nextInt(); scan.close(); int[] b = new int[m]; int[] c = new int[N-m]; for(int i=0;i<m;i++) b[i] = a[i]; for(int i=m,j=0;i<N;i++,j++) c[j] = a[i]; for(int i=0;i<N-m;i++) a[i] = c[i]; for(int i=N-m,j=0;i<N;i++,j++) a[i] = b[j]; for(int i=0;i<a.length;i++) System.out.print(a[i]+" "); } } |
【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
import java.util.Scanner; public class Prog37{ public static void main(String[] args){ System.out.print("请输入一个整数:"); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.close(); //定义数组变量标识某人是否还在圈内 boolean[] isIn = new boolean[n]; for(int i=0;i<isIn.length;i++) isIn[i] = true; //定义圈内人数、报数、索引 int inCount = n; int countNum = 0; int index = 0; while(inCount>1){ if(isIn[index]){ countNum++; if(countNum==3){ countNum = 0; isIn[index] = false; inCount--; } } index++; if(index==n) index = 0; } for(int i=0;i<n;i++) if(isIn[i]) System.out.println("留下的是:"+(i+1)); } } |
【程序38】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
import java.util.Scanner; public class Prog38{ public static void main(String[] args){ System.out.print("请输入一串字符:"); Scanner scan = new Scanner(System.in).useDelimiter("\\n"); String strIn = scan.next(); scan.close(); char[] ch = strIn.toCharArray(); System.out.println(strIn+"共"+(ch.length-1)+"个字符"); } } |
【程序39】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
import java.util.Scanner; public class Prog39{ public static void main(String[] args){ System.out.print("请输入一个整数:"); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.close(); if(n%2==0) System.out.println("结果:"+even(n)); else System.out.println("结果:"+odd(n)); } //奇数 static double odd(int n){ double sum = 0; for(int i=1;i<n+1;i+=2){ sum += 1.0/i; } return sum; } //偶数 static double even(int n){ double sum = 0; for(int i=2;i<n+1;i+=2){ sum += 1.0/i; } return sum; } } |
【程序40】
题目:字符串排序。
public class Prog40{ public static void main(String[] args){ String[] str = {"abc","cad","m","fa","f"}; for(int i=str.length-1;i>=1;i--){ for(int j=0;j<=i-1;j++){ if(str[j].compareTo(str[j+1])<0){ String temp = str[j]; str[j] = str[j+1]; str[j+1] = temp; } } } for(String subStr:str) System.out.print(subStr+" "); } } |