java基础习题50道(五)

package com.oracle.day161105_java50;


/*
 * 求1+2!+3!+...+20!的和 
 * */
public class Demo21 {


public static void main(String[] args) {
// TODO Auto-generated method stub


long num=0;
long temp=1;
   for (int j = 1; j <=20; j++) {
temp=temp*j;
num=num+temp;
System.out.println(num);
}
   System.out.println("总和为:"+num);
   }

}


package com.oracle.day161105_java50;


/*
 * 【程序22】
         题目:利用递归方法求5!。
         程序分析:递归公式:fn=fn_1*4!
 * */
public class Demo22 {


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("5的阶乘为"+fact(5));


}

public static long fact(int n){
if(n==1){
return 1;
}else{
return fact(n-1)*n;
}

}


}


package com.oracle.day161105_java50;


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


public static void main(String[] args) {
System.out.println(getAge(5));
}
//求第m位同志的年龄
private static int getAge(int m){
if(m==1){
 return 10;
}else{
 return getAge(m-1)+2;
}
}
}


package com.oracle.day161105_java50;


import java.util.Scanner;


/*
 * 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
 * */
public class Demo24 {


public static void main(String[] args) {
int unit ;//个
int decade;//十
int hundred;//百
int thousand;//千
int ten_thousand;//万
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数:");
int n = sc.nextInt();
ten_thousand=n/10000;
thousand=(n-ten_thousand*10000)/1000;
hundred=(n-ten_thousand*10000-thousand*1000)/100;
decade=(n-ten_thousand*10000-thousand*1000-hundred*100)/10;
unit=(n-ten_thousand*10000-thousand*1000-hundred*100-decade*10);

System.out.println("万位:"+ten_thousand);
System.out.println("千位:"+thousand);
System.out.println("百位:"+hundred);
System.out.println("十位:"+decade);
System.out.println("个位:"+unit);

if(ten_thousand!=0){
System.out.println(n+"为五位数");
System.out.println("逆序打印:"+unit+decade+hundred+thousand+ten_thousand);
}else if(thousand!=0){
System.out.println(n+"为四位数");
System.out.println("逆序打印:"+unit+decade+hundred+thousand);
}else if(hundred!=0){
System.out.println(n+"为三位数");
System.out.println("逆序打印:"+unit+decade+hundred);
}else if(decade!=0){
System.out.println(n+"为二位数");
System.out.println("逆序打印:"+unit+decade);
}else if(unit!=0){
System.out.println(n+"为一位数");
System.out.println("逆序打印:"+unit);
}else{
System.out.println("输入数字不合题意!");
}

}
}


//   法二


//int n = Integer.parseInt(args[0]); 
//int i = 0;
//int[] a = new int[5];
//do{
// a[i] = n%10;
//  n /= 10;
//  ++i;
//}while(n!=0);
//System.out.print("这是一个"+i+"位数,从个位起,各位数字依次为:");
//for(int j=0;j<i;j++)
//  System.out.print(a[j]+" ");
//}
//}


package com.oracle.day161105_java50;


import java.util.Scanner;


/*
 * 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
 * */
public class Demo25 {


public static void main(String[] args) {
// TODO Auto-generated method stub
int unit ;//个
int decade;//十
int hundred;//百
int thousand;//千
int ten_thousand;//万
Scanner sc = new Scanner(System.in);
System.out.println("请输入5位的正整数:");
int n = sc.nextInt();
ten_thousand=n/10000;
thousand=(n-ten_thousand*10000)/1000;
hundred=(n-ten_thousand*10000-thousand*1000)/100;
decade=(n-ten_thousand*10000-thousand*1000-hundred*100)/10;
unit=(n-ten_thousand*10000-thousand*1000-hundred*100-decade*10);

System.out.println("万位:"+ten_thousand);
System.out.println("千位:"+thousand);
System.out.println("百位:"+hundred);
System.out.println("十位:"+decade);
System.out.println("个位:"+unit);

if(unit==ten_thousand && decade==thousand) {
System.out.println(n+"是回文数");
}else{
System.out.println(n+"不是回文数");
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值