java经典编程题

来源:互联网 发布:2017优化设计政治答案 编辑:程序博客网 时间:2024/05/19 03:22

最近开始学习java编程,看了一些博客和教学视频,找到了这些练习题,想把最近打的代码发上来,记录我的学习历程。

1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

public class Example1 {
public static void main(String[] args){
int[] list=new int[36];
   list[0]=list[1]=1;
   for(int i=0;i<list.length;i++){
    if(i==0||i==1)
    System.out.println("第"+(i+1)+"个月有"+list[i]+"对兔子");
    else{
    list[i]=list[i-1]+list[i-2];
    System.out.println("第"+(i+1)+"个月有"+list[i]+"对兔子");
   
   }
}
}
====================================================================================================================================

2.题目:判断101-200之间有多少个素数,并输出所有素数。
 
public class Example2 {
public static void main(String[] args){
int number=101;
int count=0;
while(number>=101&&number<=200){
      boolean isPrime=true;
       for( int divisor=2;divisor<=number/2;divisor++){
        if(number%divisor==0){
        isPrime=false;
           break;
        }
         }
          if(isPrime){
          count++;
             System.out.print(number+" ");
          }
          if(count%10==0){
          System.out.println();
          }
          number++;
       }
System.out.println("共有"+count+"个素数");
      }
}
====================================================================================================================================

3.题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

public class Example3 {
public static void main(String [] args){
System.out.println("打印所有的'水仙花数'");
int b,s,g;
for(int number=100;number<=999;number++ ){
b=number/100;
s=number/10%10;
g=number%10;
if(number==Math.pow(b,3)+Math.pow(s,3)+Math.pow(g,3)){
System.out.println(number);
}
}
}
}
====================================================================================================================================

4.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

public class Example4 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("请输入要分解的正整数:");
int number=input.nextInt();
System.out.print(number+"=");
/*int i=2;
while(number>i){
if(number%i==0){
System.out.print(i+"*");
number=number/i;
        }else{ 
               i++; 
               } 
    } */
for(int i=2;i<number;i++){
if(number%i==0){
System.out.print(i+"*");
number=number/i;
}
}
        System.out.print(number+";"); 

}
====================================================================================================================================

5.题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

public class Example5 {
public static void main(String[] args){
double  grade;//分数
Scanner input=new Scanner(System.in);
System.out.print("请输入你的分数:");
grade=input.nextDouble();
if(grade>=90)
System.out.println("你的成绩为A");
else if(grade>=60)
System.out.println("你的成绩为B");
else
System.out.println("你的成绩为C");
}
}
====================================================================================================================================


6.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

public class Example6 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入两个数:");
int m=input.nextInt();
int n=input.nextInt();
int gcd=GreatestCommonDivisor( m, n);
int lcm=LeastCommonMultiple(m,n);
System.out.println(m+"和"+n+"的最大公约数是"+gcd);
System.out.println(m+"和"+n+"的最小公倍数是"+lcm);
}
public static int LeastCommonMultiple(int m, int n) {
int gcd=GreatestCommonDivisor( m, n);
int lcm=(m/gcd)*(n/gcd)*gcd;
return lcm;
}
public static int GreatestCommonDivisor(int m, int n) {
int k=2;
int gcd=2;
while(k<=m&&k<=n){
if(m%k==0&&n%k==0){
gcd=k;
}
k++;
}
return gcd;
}
}
====================================================================================================================================

7.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

public class Example7 {
public static void main(String [] args){
String str;
int letters=0,space=0,digits=0,others=0;
System.out.println("请输入一行字符:");
Scanner input=new Scanner(System.in);
str=input.nextLine();
char[] charArray;
charArray=str.toCharArray();
for(int i=0;i<charArray.length;i++){
if(Character.isLetter(charArray[i])){
letters++;
}else if(Character.isSpaceChar(charArray[i])){
space++;
}else if(Character.isDigit(charArray[i])){
digits++;
}else
others++;
}
System.out.println("共有字母"+letters+"个,空格"+space+"个,数字"+digits+"个,其它"+others+"个");
}
===================================================================================================================================

8.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

public class Example8 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入要相加的数字:");
int a=input.nextInt();
System.out.println("请输入要加几次:");
int b=input.nextInt();
int start=10;
int number=a;
int sum=a;
for(int i=2;i<=b;i++){
number=number+start*a;
sum=sum+number;
start=start*10;
}
System.out.println("和为"+sum);
}
}
====================================================================================================================================

9.题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

public class Example9 {
public static void main(String[] args){
System.out.println("打印所有的完数");
for(int number=1;number<=1000;number++){
int sum=0;
for(int divisor=1;divisor<number;divisor++){
if(number%divisor==0){
sum=sum+divisor;
}
}
if(number==sum){
System.out.println(number+" ");
}
}
}
}
====================================================================================================================================
10.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

public class Example10 {
public static void main(String[] args){
double sum=100;
double height=100;
for(int i=2;i<=10;i++){
height=height/2;
sum=sum+height*2;
}
System.out.println("共经过"+sum+"米");
System.out.println("第10次反弹"+height+"米");
}
}
====================================================================================================================================
11.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

public class Example11 {
public static void main(String[] args){
int n=0;
for(int i=1;i<=4;++i){
for(int j=1;j<=4;++j){
for(int k=1;k<=4;++k){
if(i!=j&&i!=k&&j!=k&&n++!=0){
System.out.println("NO."+n+":"+i+""+j+""+k);
}
}
}
}
}
}
====================================================================================================================================

12.题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

public class Example12 {
      public static void main(String[] args){
double profits=0;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
Scanner input=new Scanner(System.in);
System.out.print("请输入当月的利润:");
profits=input.nextDouble();
if(profits<=100000){
bonus=profits*0.1;
}else if(profits<=200000){
bonus=bonus1+(profits-100000)*0.075;
}else if(profits<=400000){
bonus=bonus2+(profits-200000)*0.05;;
}else if(profits<=600000){
bonus=bonus4+(profits-400000)*0.03;
}else if(profits<=1000000){
bonus=bonus6+(profits-600000)*0.015;
}else
bonus=bonus10+(profits-1000000)*0.01;
        System.out.print("应发放奖金总数为:"+bonus);
      }
}
====================================================================================================================================

13.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

public class Example13 {
      public static void main(String[] args){
System.out.println("10000以内的数:");
for(int i=0;i<10000;i++){
if((Math.sqrt(i+100)%1==0)&&(Math.sqrt(i+100+168)%1==0)){
System.out.println(i);
}
}
}
} 
====================================================================================================================================

14.题目:输入某年某月某日,判断这一天是这一年的第几天?

public class Example14 {
    public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入年月日");
System.out.print("请输入年:");
int year=input.nextInt();
System.out.print("请输入月:");
int mouth=input.nextInt();
System.out.print("请输入日:");
int day=input.nextInt();
int dayCount=0;
int mouthSum=0;
//闰年
if((year%4==0&&year%100!=0)||(year%400==0)){
//闰年里的每个月的天数
int[] mouth1=new int[]{31,29,31,30,31,30,31,31,30,31,30,31};
if(mouth==1){
dayCount=day;
}else{
for(int i=1;i<mouth;i++){
mouthSum+=mouth1[i-1];
}
dayCount=day+mouthSum;
}
}else{//平年
int[] mouth1=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
if(mouth==1){
dayCount=day;
}else{
for(int i=1;i<mouth;i++){
mouthSum+=mouth1[i-1];
}
dayCount=day+mouthSum;
}
}
System.out.println("这一天是这一年的第"+dayCount+"天");
    } 
}
====================================================================================================================================

15.题目:输入三个整数x,y,z,请把这三个数由小到大输出。

public class Example15 {
    public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入要排列的三个数:");
int x,y,z,temp;
x=input.nextInt();
y=input.nextInt();
z=input.nextInt();
if(x>y){
temp=x;x=y;y=temp;
}
if(x>z){
temp=x;x=z;z=temp;
}
if(y>z){
temp=y;y=z;z=temp;
}
System.out.println("排列后顺序为:"+x+"<"+y+"<"+z);
}
}
====================================================================================================================================

16.题目:输出9*9口诀。

public class Example16 {
    public static void main(String[] args){
System.out.println("-------------------------------99乘法表-----------------------------");
System.out.println("-------------------------------------------------------------------------");
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+" ");

System.out.println();
}
}
}
=======================================================================================================================================================================


17.题目:一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个.

public class Example17 {
    public static void main(String[] args){
int x=1;
for(int i=1;i<10;i++){
x=2*(x+1);
}
System.out.println("第一天共摘了"+x+"个");
}
}
=======================================================================================================================================================================


18.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

public class Example18 {
    public static void main(String[] args){
    String a="xyz",b="",c="";
        for(int i=0;i<3;i++){
        if(a.substring(i, i+1).equals("x")||a.substring(i, i+1).equals("z")){
        continue;
        }
        System.out.println("c PK"+a.substring(i,i+1));
        b=a.replace(a.substring(i,i+1), "");
        } 
        for(int i=0;i<2;i++){
        if(a.substring(i, i+1).equals("x")){
        continue;
        }
        System.out.println("a PK"+b.substring(i,i+1));
        c=b.replace(b.substring(i,i+1), "");
        }
        System.out.println("b PK"+c);
    }
}
=======================================================================================================================================================================


19.题目:打印出如下图案(菱形)

   *
  ***
 *****
*******
 *****
  ***
   *
 
public class Example19 {
    public static void main(String[] args){
for(int i=1;i<=4;i++){
for(int j=1;j<=4-i;j++){
System.out.print(" ");
}
for(int k=1;k<=2*i-1;k++){
System.out.print("*");
   }
System.out.println();
}
for(int i=1;i<=3;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
for(int k=1;k<=7-2*i;k++){
System.out.print("*");
}
System.out.println();
}
    }
}
====================================================================================================================================

20.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
 
public class Example20 {
    public static void main(String[] args){
double a=1,b=2,temp;
double sum=0;
for(int i=1;i<=20;i++){
sum=sum+(b/a);
temp=a;
a=b;
b=temp+b;
}
System.out.println(sum);
}
}
=======================================================================================================================================================================

21.题目:求1+2!+3!+...+20!的和
         
public class Example21 {
public static void main(String[] args){
double sum=0;
        double start=1;
for(int i=1;i<=20;i++){
start=start*i;
sum=sum+start;
}
System.out.println("1+2!+3!+...+20!的和是"+sum);
}
}
====================================================================================================================================

22.题目:利用递归方法求5!

public class Example22 {
public static void main(String[] args){
            int x=5;
   int result=fact(x);
   System.out.println("5的阶乘是"+result);
}
private static int fact(int x) {
if(x>1)
return(x*fact(x-1));
else
return 1;
}
}
====================================================================================================================================
23.题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

public class Example23 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("请输入一个不多于5位的数:");
int number=input.nextInt();
int w,q,b,s,g;
w=number/10000;
q=number%10000/1000;
b=number%10000%1000/100;
s=number%100/10;
g=number%10;
if(w!=0){
System.out.print("这个数是5位数,逆序为:"+g+""+s+""+b+""+q+""+w);
}else if(q!=0){
System.out.print("这个数是4位数,逆序为:"+g+""+s+""+b+""+q);
}else if(b!=0){
System.out.print("这个数是3位数,逆序为:"+g+""+s+""+b);
}else if(s!=0){
System.out.print("这个数是2位数,逆序为:"+g+""+s);
}else if(g!=0){
System.out.print("这个数是1位数,逆序为:"+g);
}
}
}

===================================================================================================================================

24.题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 问第一个人,他说是10岁。请问第五个人多大?

public class Example24 {
public static void main(String[] args){
int person=10;
for(int i=2;i<=5;i++){
person=person+2;
}
System.out.println("第五个人"+person+"岁");
}
}
====================================================================================================================================

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


public class Example25 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("请输入一个五位数:");
int number=input.nextInt();
int w,q,s,g;
w=number/10000;
q=number%10000/1000;
s=number%100/10;
g=number%10;
if(w==g&&s==q){
System.out.print("这个数是回文数。");
}else{
System.out.print("这个数不是是回文数。");
}
}
}

0 0
原创粉丝点击