JAVA经典编程50题附答案.docx

上传人:b****3 文档编号:24728979 上传时间:2023-06-01 格式:DOCX 页数:65 大小:33.21KB
下载 相关 举报
JAVA经典编程50题附答案.docx_第1页
第1页 / 共65页
JAVA经典编程50题附答案.docx_第2页
第2页 / 共65页
JAVA经典编程50题附答案.docx_第3页
第3页 / 共65页
JAVA经典编程50题附答案.docx_第4页
第4页 / 共65页
JAVA经典编程50题附答案.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

JAVA经典编程50题附答案.docx

《JAVA经典编程50题附答案.docx》由会员分享,可在线阅读,更多相关《JAVA经典编程50题附答案.docx(65页珍藏版)》请在冰豆网上搜索。

JAVA经典编程50题附答案.docx

JAVA经典编程50题附答案

JAVA经典编程50题

初学JAVA坚持做完,JAVA完全可以入门,每天做4-5题就可以

答案是本人自己做的,才初学浅,若有问题还希望有及时指出,感激不尽

联系QQ:

1345523590网名:

叫我雷锋

【程序1】   

题目:

古典问题:

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

   

packagejava50;

publicclassJava1{

/**

*@param算法50题第一题。

兔子问题,问题分析是一个斐波纳契数列,本题应该说有多种方法,我只写了其中一个,你自己可以试试用数组的方法,还有递归都可以。

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

//已经知道一月和二月的兔子数

inta1=1;

inta2=1;

inta3,a4;

//打印一二月的兔子数

System.out.print(a1+""+a2);

//从3月开始,到十二月的兔子数

for(inti=3;i<=12;i++){

a3=a1+a2;

a1=a2;

a2=a3;

//打印每个月的兔子数

System.out.print(""+a3);

}

}

}

 

【程序2】   

题目:

判断101-200之间有多少个素数,并输出所有素数。

程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

   

packagejava50;

importjava.util.*;

publicclassJava2{

/**

*@paramargs

*求101到200之间的素数

*素数是它除以2到sqr本身的数,没有能够整除他的

*/

publicJava2(){}

publicvoidsu(inta[]){

}

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

inta[]=newint[100];

for(inti=100;i<201;i++){

for(intj=0;j

a[j]=i;break;

}

}

Java2j2=newJava2();

j2.su(a);

}

}

【程序3】   

题目:

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

packagejava50;

publicclassJava3{

/**

*【程序3】   题目:

打印出所有的"水仙花数",

*所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

*例如:

153是一个"水仙花数",

*因为153=1的三次方+5的三次方+3的三次方。

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

for(inti=101;i<1000;i++){

inta=i%10;

intb=(i/10)%10;

intc=i/100;

//System.out.print(a+""+b+""+c);

if(i==a*a*a+b*b*b+c*c*c){

System.out.println(i);

}

}

}

}

【程序4】   

题目:

将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

   

程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

   

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

   

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

   

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

 

 packagejava50;

importjava.util.Scanner;

publicclassJava4{

/**

*程序4】   题目:

将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

  

* 程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

  

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

 

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

   

*(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

  

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Scanners=newScanner(System.in);

intn=s.nextInt();

intk=2;

while(n>=k){

if(n==k){System.out.println(k);break;

}else{

if(n%k==0){System.out.print(k+"*");

n=n/k;

}else{

k++;

}

}

}

}

}

【程序5】   

题目:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

   

packagejava50;

publicclassJava5{

/**

*【程序5】   

*题目:

利用条件运算符的嵌套来完成此题:

*学习成绩>=90分的同学用A表示,

*60-89分之间的用B表示,60分以下的用C表示。

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

intc=80;

charcj=(c>=90)?

'A':

(c>=60)?

'B':

'C';

System.out.println(cj);

}

}

【程序6】   

题目:

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

   

/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。

*/

importjava.util.*;

public   class    lianxi06    {

publicstaticvoidmain(String[]args){

int    a,b,m;

Scanners=newScanner(System.in);

System.out.print("键入一个整数:

");

a=s.nextInt();

System.out.print("再键入一个整数:

");

b=s.nextInt();

     deffcd=newdeff();

     m=cd.deff(a,b);

     intn=a*b/m;

     System.out.println("最大公约数:

"+m);

     System.out.println("最小公倍数:

"+n);

}

}

classdeff{

publicintdeff(intx,inty){

    intt;

    if(x

     t=x;

     x=y;

     y=t;

    }  

    while(y!

=0){

     if(x==y)returnx;

     else{

      intk=x%y;

      x=y;

      y=k;

     }

    }

    returnx;

}

}

【程序7】   

题目:

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

   

packagejava50;

importjava.util.Scanner;

publicclassJava7{

/**

*【程序7】   

*题目:

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

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Scanners=newScanner(System.in);

//获取输入的值ss

Stringss=s.nextLine();

//将ss转换为数组的形式;

chara[]=ss.toCharArray();

//定义字母、空格、数字和其它字符的个数。

intkg=0;

intzm=0;

intsz=0;

intqt=0;

//进行判断

for(charaa:

a){

if(aa==''){

kg++;

}elseif(aa>='a'&&aa<='z'||aa>='A'&&aa<'Z'){

zm++;

}elseif(aa>='0'&&aa<='9'){

sz++;

}else{

qt++;

}

}

//输出结果

System.out.println("字母有"+zm+"个;");

System.out.println("空格有"+kg+"个;");

System.out.println("数字有"+sz+"个;");

System.out.println("其它字符"+qt+"个。

");

}

}

【程序8】   

题目:

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

   

packagejava50;

importjava.util.Scanner;

publicclassJava8{

/**

*【程序8】   

*题目:

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

*例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Scannerss=newScanner(System.in);

System.out.println("请输入a的值:

");

inta=ss.nextInt();

System.out.println("请输入有几个数相加:

");

intg=ss.nextInt();

ints=0;

for(inti=1;i<=g;i++){

s=s+a;

//System.out.print("a="+a+"");

a=a*10+2;

//System.out.print("s="+s+"");

}

//System.out.println(2+22+222+2222+22222);

System.out.println("结果是"+s);

}

}

【程序9】   

题目:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。

例如6=1+2+3.编程    找出1000以内的所有完数。

   

packagejava50;

publicclassJava9{

/**

*【程序9】   

*题目:

一个数如果恰好等于它的因子之和,

*这个数就称为"完数"。

例如6=1+2+3.编程    

*找出1000以内的所有完数。

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

for(inti=6;i<1000;i++){

inth=0;

for(intj=1;j<=i;j++){

if(i%j==0){

//if(h!

=0){System.out.print(h+"+");}

h=h+j;

if(h==i){

System.out.println(i);

}

}

}//6=1x2x3;

//24=1x2x3x4;

//28=1x2x4x7x14

}

}

}

【程序10】   

题目:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在    第10次落地时,共经过多少米?

第10次反弹多高?

packagejava50;

publicclassJava10{

/**

*【程序10】   题目:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在    

*第10次落地时,共经过多少米?

第10次反弹多高?

*s=299.609375

h=0.09765625

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

doubleh=100;

doubles=0;

for(inti=1;i<=10;i++){

if(i==1){

s=100;

System.out.println(s);

}else{

s=s+h*2;

System.out.println(s);

}

h=h/2;

System.out.println(h);

}

System.out.println("s===="+s);

System.out.println("第十次反弹"+h+"米");

}

}

【程序11】   

题目:

有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

   

packagejava50;

publicclassJava11{

/**

*【程序11】   题目:

有1、2、3、4四个数字,

*能组成多少个互不相同且无重复数字的三位数?

都是多少?

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

ints=0;

for(inta=1;a<5;a++){

for(intb=1;b<5;b++){

for(intc=1;c<5;c++){

for(intd=1;d<5;d++){

if(a!

=b&&a!

=c&&a!

=d&&b!

=c&&b!

=d&&c!

=d){

System.out.println(a+""+b+""+c+""+d);

s++;

}

}

}

}

}

System.out.println("共有"+s+"个");

}

}

【程序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%提成,从键盘输入当月利润,求应发放奖金总数?

   

packagejava50;

importjava.util.Scanner;

publicclassJava12{

/**

*【程序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%提成,从键盘输入当月利润,求应发放奖金总数?

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Scanners=newScanner(System.in);

doublelr=s.nextInt();

//150W的时候结果为:

//System.out.println(10*0.1+0.075*10+20*0.05+20*0.03+40*0.015+50*0.01);

if(lr>10){

if(lr>20){

if(lr>40){

if(lr>60){

if(lr>100){

System.out.println(10*0.1+(10*0.075)+(20*0.05)+(20*0.03)+(40*0.015)+(lr-100)*0.01);

}else{

System.out.println(10*0.1+(10*0.075)+(20*0.05)+(20*0.03)+(lr-60)*0.015);

}

}else{

System.out.println(10*0.1+(10*0.075)+(20*0.05)+(lr-40)*0.03);

}

}else{

System.out.println(10*0.1+(10*0.075)+(lr-20)*0.05);

}

}else{

System.out.println(10*0.1+(lr-10)*0.075);

}

}else{System.out.println(0.1*lr);}

}

}

【程序13】   

题目:

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

   

packagejava50;

publicclassJava13{

/**

*【程序13】   

*题目:

一个整数,它加上100后是一个完全平方数,

*再加上168又是一个完全平方数,

*请问该数是多少?

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

//做一个循环找小于100000之间的数

for(doublei=-100;i<100000;i++){

//如果这个数的开方%1=0,说明这个数的开方是个整数

if(Math.sqrt(i+100)%1==0){

if(Math.sqrt(i+268)%1==0){

System.out.println((int)i);

}

}

}

}

}

/*按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。

但是我看到大部分人解这道题目时都把题中的“整数”理解成正整数,我也就随大流了。

*/

【程序14】  

题目:

输入某年某月某日,判断这一天是这一年的第几天?

   

packagejava50;

importjava.util.Scanner;

publicclassJava14{

/**

*【程序14】  

*题目:

输入某年某月某日,判断这一天是这一年的第几天?

   

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Scanners=newScanner(System.in);

System.out.println("请输入年份:

");

intyear=s.nextInt();

System.out.println("请输入月份:

");

intmonth=s.nextInt();

System.out.println("请输入几号:

");

intday=s.nextInt();

intd=0;

if(year<0||month<0||month>12||day<0||day>31){

System.out.println("输入错误,请重新输入!

");

System.exit(0);

}

for(inti=1;i<=month;i++){

switch(month){

case1:

case3:

case5:

case7:

case8:

ca

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1