Java经典五十道题21-30题

来源:互联网 发布:天财商龙餐饮软件下载 编辑:程序博客网 时间:2024/05/12 20:17
【程序21】 
题目:求1+2!+3!+...+20!的和 
1.程序分析:此程序只是把累加变成了累乘。




【程序22】
题目:利用递归方法求5!。 
1.程序分析:递归公式:fn=fn_1*4!




【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。




【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。




【程序25】 
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。




【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 
1.略,懒得写了




【程序27】 
题目:求100之内的素数    前面有判断素数的练习了,不想写了。




【程序28】  
题目:对10个数进行排序 
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第 
二个元素与后8个进行比较,并进行交换。 没意思不写了




【程序29】 
题目:求一个3*3矩阵对角线元素之和 
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 




【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数, 

依次后移一个位置。

package javaimprove021;/* * 【程序21】TestJieCheng.java 题目:求1+2!+3!+...+20!的和  */public class Multiplicative {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint sum=0;for(int i=1;i<=20;i++){int temp=1;for(int j=1;j<=i;j++){temp*=j;}sum+=temp;}System.out.printf("前20项的阶乘的和为:%d",sum);}}
package javaimprove022;/* * 【程序22】TestJieCheng2.java 题目:利用递归方法求5!。 */public class Multi {public int multi(int n){if(n==1)return 1;return n*multi(n-1);}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMulti mu=new Multi();System.out.printf("5的阶乘为:%d",mu.multi(5));}}

package javaimprove023;/* * 【程序23】TestAge.java 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?问题分析:每个都说差两岁,这样就可以得到递归,递归的结束条件是当年龄为10岁的时候,这是第1个人。 */public class Age {public int age(int n){if(n==1)return 10;return 2+age(n-1);}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubAge age=new Age();System.out.printf("第五个人的年龄为:%d",age.age(5));}}


package javaimprove024;import java.util.Scanner;/* * 【程序24】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 */public class Digit {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入一个不多余五位数的正整数:");Scanner in=new Scanner(System.in);int number=in.nextInt();//System.out.print(number/10000);int n1=number/10000;//最高位int n2=number%10000/1000;int n3=number%1000/100;int n4=number%100/10;int n5=number%10;//最低位System.out.println(n1!=0?"五位数":(n2!=0?"四位数":(n3!=0?"三位数":(n4!=0?"二位数":"一位数"))));System.out.println(n5*10000+n4*1000+n3*100+n2*10+n1);}}
package javaimprove025;import java.util.Scanner;/* * 【程序25】 HuiWenShu.java 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 */public class Palindrome {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入一个五位数的正整数:");Scanner in=new Scanner(System.in);int number=in.nextInt();//System.out.print(number/10000);int n1=number/10000;//最高位int n2=number%10000/1000;int n3=number%1000/100;int n4=number%100/10;int n5=number%10;//最低位if(n5==n1&&n4==n2){System.out.println("这个数字是回文数!");}else{System.out.println("这个数不是回文数!");}}}
package javaimprove029;import java.util.Scanner;/* * 【程序29】题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 */public class Matrix {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入矩阵的大小:");Scanner in=new Scanner(System.in);int n=in.nextInt();double[][] matrix=new double[n][n];double sum=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){matrix[i][j]=in.nextDouble();if(i==j)sum+=matrix[i][j];}}System.out.println(sum);}}
package javaimprove030;import java.util.Scanner;/* * 【程序30】 ArraySort.java 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数, 依次后移一个位置。或者用二分法插入,在这里为了能够多次插入而不至于溢出,那么我们采用的笨办法是每次新建一个大1的数组接盘。 */public class ArraySort {public int[] insert(int[] a,int n)//向数组array插入元素n{int[] newA=new int[a.length+1];for(int i=0;i<a.length;i++){if(n<=a[i]){for(int j=newA.length-1;j>i;j--){newA[j]=a[j-1];}newA[i]=n;printA(newA);return newA;}else{newA[i]=a[i];}}newA[a.length]=n;//插入数组的最后,特殊情况特殊处理printA(newA);return newA;}public void printA(int[] A){for(int k:A){System.out.printf("%d  ",k);}}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入数组元素(输入-1表示结束):");//在这个小程序里,每输入 一个数就向数组插入进去Scanner in=new Scanner(System.in);int[] esist=new int[]{1,2,3,4,5};int temp=in.nextInt();ArraySort sort=new ArraySort();while(temp!=0){esist=sort.insert(esist, temp);temp=in.nextInt();}}}









原创粉丝点击