【程序21】
题目:求1+2!+3!+…+20!的和
【程序22】
题目:利用递归方法求5!。
/*** 【程序21】
* 题目:求1+2!+3!+…+20!的和
* 【程序22】
* 题目:利用递归方法求5!。*/
public classSubject21And22 {public static voidmain(String[] args) {long sum = factorialSum(20);System.out.println("1+2!+3!+…+20!之和:"+sum);
}/*** 阶乘求和
*@paramnum
*@return
*/
private static long factorialSum(intnum) {long sum = 0;for (int j = 1; j <= num; j++) {
sum= sum+factorial(j);
}returnsum;
}/*** 计算num的阶乘!
*@paramnum
*@return
*/
public static long factorial(intnum){if(num == 1){return 1;
}else{return num*factorial(num-1);
}
}
}
运行结果:
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
/*** 【程序23】
* 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?*/
public classSubject23 {public static voidmain(String[] args) {int ageNum = getAge(5);
System.out.println("第五个人的年龄:"+ageNum);
}/*** 获取年龄
*@paramp0
*@return
*/
private static int getAge(intp0) {if(p0 == 1){return 10;
}else{return getAge(p0-1)+2;
}
}
}
运行结果:
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
/*** 【程序24】
* 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。*/
public classSubject24 {public static voidmain(String[] args) {
System.out.println("请输入需要分析的正整数:");
Scanner scanner= newScanner(System.in);int num =scanner.nextInt();
analysisInt(num);
}/*** 分析正整数
*@paramnum*/
private static void analysisInt(intnum) {
String tmpStr=String.valueOf(num);char[] arrStr =tmpStr.toCharArray();
System.out.println("该正整数是"+arrStr.length+"位数。");
System.out.println("倒序打印为:");for (int i = arrStr.length-1; i >= 0; i--) {
System.out.print(arrStr[i]+" ");
}
}
}
运行结果:
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
importjava.util.ArrayList;importjava.util.List;/*** 【程序25】
* 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。*/
public classSubject25 {private static List list = new ArrayList<>();public static voidmain(String[] args) {int num = 12321;
palindromeNumber(num);if(list.get(0) == list.get(4) && list.get(1) == list.get(3)){
System.out.println("数字("+num+")是回文数");
}else{
System.out.println("数字("+num+")不是回文数");
}/***第二种方式**/
char[] arr = (num+"").toCharArray();if(arr[0]==arr[4] && arr[1]==arr[3]){
System.out.println("数字("+num+")是回文数");
}else{
System.out.println("数字("+num+")不是回文数");
}
}/*** 判断num是否是回文数
*@paramnum*/
private static void palindromeNumber(intnum) {int lenght = (num+"").length()-1;int numTmp = 0;if(num < 10){
numTmp=num;
}else{
numTmp= num/(int)Math.pow(10,lenght);int tmp =num - numTmp*(int)Math.pow(10,lenght);
palindromeNumber(tmp);
}
list.add(numTmp);
}
}
运行结果:
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
importjava.util.Scanner;/*** 【程序26】
* 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。*/
public classSubject26 {public static voidmain(String[] args) {
System.out.println("请输入你现在心里想的哪个星期几(只需要前两个字母即可):");
Scanner scanner= newScanner(System.in);
String scannerStr=scanner.next();//判断输入的星期几
weekDay(scannerStr);
}/*** 判断输入的星期的星期几
*@paramscannerStr*/
private static voidweekDay(String scannerStr) {char[] scannerArr =scannerStr.toCharArray();switch (scannerArr[0]){case 'M': System.out.println("您输入的星期一"); break;case 'T':switch (scannerArr[1]){case 'U': System.out.println("您输入的星期二"); break;case 'H': System.out.println("您输入的星期四"); break;default:
System.out.println("您输入的不是星期,请重新输入:");
Scanner scanner= newScanner(System.in);
scannerStr=scanner.next();//判断输入的星期几
weekDay(scannerStr);
}break;case 'W': System.out.println("您输入的星期三"); break;case 'F': System.out.println("您输入的星期五"); break;case 'S':switch (scannerArr[1]){case 'A': System.out.println("您输入的星期六"); break;case 'U': System.out.println("您输入的星期天"); break;default:
System.out.println("您输入的不是星期,请重新输入:");
Scanner scanner= newScanner(System.in);
scannerStr=scanner.next();//判断输入的星期几
weekDay(scannerStr);
}break;default:
System.out.println("您输入的不是星期,请重新输入:");
Scanner scanner= newScanner(System.in);
scannerStr=scanner.next();//判断输入的星期几
weekDay(scannerStr);
}
}
}
运行结果:
【程序27】
题目:对10个数进行排序
importjava.util.Scanner;/*** 【程序27】
* 题目:对10个数进行排序*/
public classSubject27 {public static voidmain(String[] args) {
System.out.println("请输入10个整数:");
Scanner scanner= newScanner(System.in);int[] arr = new int[10];for (int i = 0; i <10 ; i++) {
System.out.println("请输入第"+(i+1)+"个数:");int num =scanner.nextInt();
arr[i]=num;
}
sortInt(arr);
}/*** 对数组arr进行排序
*@paramarr*/
private static void sortInt(int[] arr) {int tmp = 0;for(int i =0 ;iarr[j]){
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
}
System.out.println("从小到大排序为:");for (int i = 0; i
System.out.print(arr[i]+" ");
}
}
}
运行结果:
【程序28】
题目:求一个3*3矩阵对角线元素之和
importjava.util.Random;/*** 【程序28】
* 题目:求一个3*3矩阵对角线元素之和*/
public classSubject28 {public static voidmain(String[] args) {
Random random= newRandom();int[][] arr = new int[3][3];for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {
arr[i][j]= random.nextInt(10);
}
}
seekDiagonalSum(arr);
}/*** 计算矩阵对角线之后
*@paramarr*/
private static void seekDiagonalSum(int[][] arr) {int slash = 0;int backSlash = 0;for (int i = 0; i < arr.length; i++) {
slash= slash +arr[i][i];
}
System.out.println("随机生成的3*3的矩阵为:");for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length ; j++) {
System.out.print(arr[i][j]+ " ");if(i+j == arr.length-1){
backSlash+=arr[i][j];
}
}
System.out.println("");
}
System.out.println("正向对角线之和:"+slash);
System.out.println("反向对角线之和:"+backSlash);
}
}
运行结果:
【程序29】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
importjava.util.Scanner;/*** 【程序29】
* 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。*/
public classSubject29 {public static voidmain(String[] args) {int[] arr = new int[]{1,2,3,4,5,6,7,8,0};
System.out.println("请输入一个1到8之间的数:");
Scanner scanner= newScanner(System.in);int num =scanner.nextInt();for (int i = 0; i < arr.length-2 ; i++) {if(num >= arr[i] && num <= arr[i+1] ){for (int j = arr.length-1; j > i+1 ; j--) {
arr[j]= arr[j-1];
}
arr[i+1] =num;break;
}
}
System.out.print("插入数字("+num+")之后的数组为:");for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
运行结果:
【程序30】
题目:将一个数组逆序输出。
/*** 【程序30】题目:将一个数组逆序输出。*/
public classSubject30 {public static voidmain(String[] args) {int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
System.out.println("顺序打印:");
printArray(arr);
reverseOrder(arr);
}/*** 将arr数组逆序处理
*@paramarr*/
private static void reverseOrder(int[] arr) {int tmp = 0;for (int i = 0; i < arr.length/2 ; i++) {
tmp=arr[i];
arr[i]= arr[arr.length-1-i];
arr[arr.length-1-i] =tmp;
}
System.out.println("逆序打印:");
printArray(arr);
}/*** 打印数组
*@paramarr*/
private static void printArray(int[] arr) {for (int i = 0; i < arr.length ; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
运行结果:
参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001