JAVA编程题全集50题及答案.docx
《JAVA编程题全集50题及答案.docx》由会员分享,可在线阅读,更多相关《JAVA编程题全集50题及答案.docx(21页珍藏版)》请在冰豆网上搜索。
JAVA编程题全集50题及答案
【程序1】 ﻫ题目:
古典问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月得兔子总数为多少?
//这就是一个菲波拉契数列问题ﻫpublicclass lianxi01{ﻫpublicstaticvoidmain(String[] args){
System、out、println("第1个月得兔子对数:
1”);
System、out、println("第2个月得兔子对数:
1");ﻫintf1 =1,f2 = 1,f, M=24;ﻫ for(inti=3;i〈=M; i++){
f = f2;
f2=f1 +f2;ﻫ f1=f;
System、out、println(”第"+ i+"个月得兔子对数:
”+f2);
}ﻫ}
}
【程序2】 ﻫ题目:
判断101-200之间有多少个素数,并输出所有素数.
程序分析:
判断素数得方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不就是素数,反之就是素数。
publicclass lianxi02{
publicstaticvoidmain(String[] args) {
intcount=0;
for(inti=101;i〈200;i+=2){
booleanb = false;
for(intj=2;j〈=Math、sqrt(i);j++)
{
if(i % j== 0){ b=false;break;}ﻫ else {b= true;}
}
if(b==true){count++;System、out、println(i);}
}
System、out、println("素数个数就是:
" + count);
}ﻫ}
【程序3】
题目:
打印出所有得"水仙花数”,所谓 "水仙花数”就是指一个三位数,其各位数字立方与等于该数本身。
例如:
153就是一个"水仙花数 ”,因为153=1得三次方+5得三次方+3得三次方。
publicclasslianxi03{ﻫpublicstaticvoid main(String[]args){
intb1,b2, b3;ﻫ for(intm=101;m<1000;m++){
b3= m/100;ﻫ b2 = m %100 /10;ﻫ b1= m % 10;ﻫ if((b3*b3*b3+ b2*b2*b2+b1*b1*b1)==m){ﻫ System、out、println(m+"就是一个水仙花数”);}ﻫ }
}ﻫ}
【程序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得值,重复执行第一步。
ﻫimport java、util、*;
public class lianxi04{ﻫ publicstaticvoid main(String[]args){ﻫ Scanners=newScanner(System、in);
System、out、print(”请键入一个正整数:
”);
int n =s、nextInt();
intk=2;ﻫ System、out、print(n+”=");
while(k <=n) {
if(k ==n) {System、out、println(n);break;}ﻫ elseif(n% k ==0){System、out、print(k+”*”);n =n/k;} ﻫ else k++;ﻫ }
}
}ﻫ【程序5】 ﻫ题目:
利用条件运算符得嵌套来完成此题:
学习成绩〉=90分得同学用A表示,60—89分之间得用B表示,60分以下得用C表示。
importjava、util、*;ﻫpublicclasslianxi05{
public staticvoidmain(String[]args){ﻫ int x;
chargrade;
Scanner s=newScanner(System、in);ﻫ System、out、print( ”请输入一个成绩:
");
x= s、nextInt();
grade = x〉=90?
'A’
:
x >=60?
’B'
:
'C';ﻫ System、out、println("等级为:
"+grade);ﻫ ﻫ}ﻫ}
【程序6】 ﻫ题目:
输入两个正整数m与n,求其最大公约数与最小公倍数。
/**在循环中,只要除数不等于0,用较大数除以较小得数,将小得一个数作为下一轮循环得大数,取得得余数作为下一轮循环得较小得数,如此循环直到较小得数得值为0,返回较大得数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。
* /ﻫimportjava、util、*;ﻫpublic class lianxi06 {
public staticvoid main(String[]args){ﻫint a,b,m;
Scanners= new Scanner(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{
public intdeff(int x,inty){
intt;ﻫ if(x〈y){ﻫ t =x;ﻫ x=y;
y =t;
} ﻫ while(y!
= 0){
if(x ==y)returnx;ﻫ else{
intk=x%y;ﻫ x =y;
y = k;ﻫ }ﻫ }
returnx;
}ﻫ}ﻫ【程序7】
题目:
输入一行字符,分别统计出其中英文字母、空格、数字与其它字符得个数.
importjava、util、*;
public classlianxi07{ﻫpublicstaticvoidmain(String[] args){
int digital= 0;ﻫintcharacter=0;
int other= 0;ﻫintblank = 0;
char[]ch = null;
Scannersc =newScanner(System、in);
Strings=sc、nextLine();
ch= s、toCharArray();ﻫ for(inti=0; i〈ch、length;i++){
if(ch>= '0’&& ch<='9’) {ﻫ digital ++;ﻫ }elseif((ch〉='a'&& ch〈='z') ||ch>'A'&&ch<=’Z’){ﻫ character++;ﻫ } else if(ch ==' ') {
blank++;
} else{ﻫ other ++;
}ﻫ }ﻫ System、out、println("数字个数:
”+ digital);ﻫ System、out、println("英文字母个数:
”+character);
System、out、println(”空格个数:
"+blank);ﻫ System、out、println("其她字符个数:
"+ other);
}
}
【程序8】
题目:
求s=a+aa+aaa+aaaa+aa、、、a得值,其中a就是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
ﻫimportjava、util、*;ﻫpublicclass lianxi08{
publicstaticvoidmain(String[]args){ﻫ longa,b=0, sum =0;
Scanners=new Scanner(System、in);ﻫ System、out、print(”输入数字a得值:
”);
a=s、nextInt();ﻫ System、out、print(”输入相加得项数:
");ﻫ intn = s、nextInt();
inti =0;ﻫ while(i 〈n){
b=b+ a;ﻫ sum =sum+b;
a=a *10;
++ i;
}
System、out、println(sum);ﻫ}
}
【程序9】 ﻫ题目:
一个数如果恰好等于它得因子之与,这个数就称为 "完数".例如6=1+2+3、编程 找出1000以内得所有完数。
ﻫpublicclasslianxi09{
publicstaticvoid main(String[]args){
System、out、println("1到1000得完数有:
");ﻫ for(inti=1;i<1000;i++) {
intt=0;ﻫ for(intj=1;j<= i/2;j++) {ﻫ if(i%j==0) {ﻫ t=t+j;ﻫ }
}
if(t== i) {
System、out、print(i+" ");ﻫ }ﻫ }
}
【程序10】 ﻫ题目:
一球从100米高度自由落下,每次落地后反跳回原高度得一半;再落下,求它在 第10次落地时,共经过多少米?
第10次反弹多高?
ﻫpublicclass lianxi10{ﻫpublic staticvoidmain(String[]args){
doubleh= 100,s = 100;ﻫ for(inti=1;i<10;i++) {ﻫ s= s + h;
h=h/2;ﻫ }ﻫ System、out、println("经过路程:
" +s);
System、out、println("反弹高度:
”+ h/2);
}
}ﻫ【程序11】
题目:
有1、2、3、4四个数字,能组成多少个互不相同且无重复数字得三位数?
都就是多少?
ﻫpublic classlianxi11{ﻫpublicstaticvoidmain(String[]args){ﻫ int count=0;
for(intx=1;x〈5;x++){ﻫ for(inty=1;y<5; y++) {
for(int z=1;z<5;z++){
if(x !
=y &&y !
=z&&x!
=z){
count ++;ﻫ System、out、println(x*100 +y*10+z);
}ﻫ }ﻫ }ﻫ }ﻫ System、out、println(”共有” +count+"个三位数");
}ﻫ} ﻫ【程序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%提成,从键盘输入当月利润,求应发放奖金总数?
importjava、util、*;ﻫpublic classlianxi12{ﻫpublicstaticvoid main(String[]args){ﻫ doublex= 0,y = 0;
System、out、print(”输入当月利润(万):
");
Scanners=newScanner(System、in);
x=s、nextInt();ﻫ if(x〉 0 && x〈=10){
y=x * 0、1;
}elseif(x>10&&x<=20) {ﻫ y =10 * 0、1+(x—10)*0、075;
}else if(x>20 &&x<=40){
y =10*0、1 + 10*0、075+(x—20)*0、05;ﻫ }elseif(x>40 &&x <=60){
y=10*0、1+ 10*0、075+20*0、05+ (x — 40)* 0、03;ﻫ }elseif(x〉60&& x <=100){
y= 20 *0、175 + 20* 0、05 +20*0、03+(x— 60)*0、015;ﻫ }elseif(x 〉100){ﻫ y =20* 0、175+ 40*0、08+40*0、015 +(x-100)* 0、01;ﻫ }
System、out、println(”应该提取得奖金就是 ” +y+”万");ﻫ}ﻫ}
【程序13】 ﻫ题目:
一个整数,它加上100后就是一个完全平方数,再加上168又就是一个完全平方数,请问该数就是多少?
ﻫpublicclass lianxi13{
publicstaticvoid main(String[]args){ﻫ for(intx=1;x<100000;x++){ﻫ if(Math、sqrt(x+100) %1==0){
if(Math、sqrt(x+268) %1==0){
System、out、println(x +”加100就是一个完全平方数,再加168又就是一个完全平方数”);ﻫ }
}
}ﻫ}
}ﻫﻫ/*按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件得数-99.
但就是我瞧到大部分人解这道题目时都把题中得“整数”理解成正整数,我也就随大流了。
*/
【程序14】
题目:
输入某年某月某日,判断这一天就是这一年得第几天?
importjava、util、*;
publicclasslianxi14 {ﻫpublic static voidmain(String[] args){
intyear,month, day;
intdays=0;ﻫ int d= 0;
int e;
inputfymd=newinput();
do {ﻫ e=0;
System、out、print("输入年:
”);ﻫ year=fymd、input();
System、out、print("输入月:
”);ﻫ month=fymd、input();
System、out、print("输入天:
”);ﻫ day=fymd、input();
if(year< 0|| month<0|| month> 12 ||day 〈0 ||day>31){ﻫ System、out、println("输入错误,请重新输入!
");ﻫ e=1;
}
}while(e==1);ﻫ for (inti=1; i switch(i){
case 1:
case3:
ﻫ case5:
ﻫ case7:
ﻫ case8:
case10:
case12:
ﻫ days=31;
break;ﻫ case 4:
ﻫ case6:
case9:
case11:
ﻫ days=30;ﻫ break;
case2:
if((year% 400 ==0)|| (year %4== 0&&year %100!
=0)){
days=29;ﻫ } else{
days=28;ﻫ }ﻫ break;
}ﻫ d +=days;
}ﻫ System、out、println(year+ "—"+ month + ”-"+ day+"就是这年得第" +(d+day)+"天。
”);ﻫ}ﻫ}ﻫclass input{ﻫpublicintinput(){ﻫ intvalue=0;ﻫ Scanners=new Scanner(System、in);
value = s、nextInt();
return value;ﻫ}
}
【程序15】 ﻫ题目:
输入三个整数x,y,z,请把这三个数由小到大输出。
importjava、util、*;
publicclass lianxi15{ﻫpublicstaticvoidmain(String[] args){ﻫ input fnc= newinput();
intx=0,y=0, z=0;
System、out、print("输入第一个数字:
");
x =fnc、input();ﻫ System、out、print("输入第二个数字:
");
y=fnc、input();ﻫ System、out、print(”输入第三个数字:
");
z=fnc、input(); ﻫ if(x >y) {
intt=x;
x =y;ﻫ y =t;ﻫ }ﻫ if(x〉 z){ﻫ intt=x;
x =z;
z =t;
}
if(y〉z) {ﻫ intt=y;ﻫ y=z;
z= t;
}ﻫ System、out、println( "三个数字由小到大排列为:
"+x+””+y +”"+z);
}ﻫ}ﻫclassinput{
publicintinput(){
intvalue=0;
Scanner s=newScanner(System、in);
value=s、nextInt();
returnvalue;
}
}
【程序16】ﻫ题目:
输出9*9口诀。
ﻫpublicclasslianxi16{
publicstaticvoidmain(String[]args){
for(inti=1;i<10;i++){
for(intj=1;j<=i;j++){
System、out、print(j+"*"+i+"=”+ j*i+" ” );ﻫ if(j*i〈10){System、out、print("");}
}
System、out、println();
}
}ﻫ}
【程序17】 ﻫ题目:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下得桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下 得一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
publicclass lianxi17{ﻫpublic staticvoidmain(String[] args){
int x