Java经典算法50题(含代码)
【程序1】
题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第三个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?
//这是⼀个菲波拉契数列问题
public class test01 {
public static void main(String[] args) {
int f1=1,f2=1,f;
int M=30;
System.out.println(f1);
System.out.println(f2);
for(int i=3;i<M;i++) {
f=f2;
f2=f1+f2;
f1=f;
System.out.println(f2);
}
}
}
【程序2】
题⽬:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
public class test02 {
public static void main(String[] args) {
int count=0;
for(int i=101;i<200;i+=2) {
boolean flag=true;
for(int j=2;j<=Math.sqrt(i);j++) {
if(i%j==0) {
flag=false;
petentail
break;
}
}
if(flag==true) {
count++;
System.out.println(i);
}
}
System.out.println(count);
}
}
【程序3】
题⽬:打印出所有的 "⽔仙花数 ",所谓 "⽔仙花数 "是指⼀个三位数,其各位数字⽴⽅和等于该数本⾝。例如:153是⼀个 "⽔仙花数 ",因为153=1的三次⽅+5的三次⽅+3的三次⽅。
public class test03 {
public static void main(String[] args) {
int a,b,c;
for(int i=101;i<1000;i++) {
a=i%10;
b=i/10%10;
c=i/100;
if(a*a*a+b*b*b+c*c*c==i)
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的值,重复执⾏第⼀步。
import java.util.Scanner;
public class test04 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int Int();
int k=2;
while(n>=k) {
if(n==k) {
System.out.println(k);
break;
}else if (n%k==0) {
System.out.println(k);
n=n/k;
}else {
k++;
java经典上机编程题}
}
}
}
【程序5】
题⽬:利⽤条件运算符的嵌套来完成此题:学习成绩> =90分的同学⽤A表⽰,60-89分之间的⽤B表⽰,60分以下的⽤C表⽰。
import java.util.Scanner;
public class test05 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int Int();
discuz美化
char grade=score>=90?'A':score>=60?'B':'C';
System.out.println(grade);
}
}
【程序6】
题⽬:输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
/**在循环中,只要除数不等于0,⽤较⼤数除以较⼩的数,将⼩的⼀个数作为下⼀轮循环的⼤数,取得的余数作为下⼀轮循环的较⼩的数,如此循环直到较⼩的数的值为import java.util.Scanner;
public class test06 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int Int();
int Int();
test06 test=new test06();
int i = inshu(a, b);
System.out.println("最⼩公因数"+i);
System.out.println("最⼤公倍数"+a*b/i);
}
public int gongyinshu(int a,int b) {
if(a<b) {
int t=b;
b=a;
a=t;
}
while(b!=0) {
if(a==b)
return a;
int x=b;
b=a%b;
a=x;
}
return a;
}
}
【程序7】
题⽬:输⼊⼀⾏字符,分别统计出其中英⽂字母、空格、数字和其它字符的个数。
import java.util.Scanner;
public class test07 {
public static void main(String[] args) {
int abccount=0;
int spacecount=0;
int numcount=0;
int othercount=0;
Scanner input=new Scanner(System.in);
String Line();
char [] CharArray();
for(int i=0;i<ch.length;i++) {
if(Character.isLetter(ch[i])) {
abccount++;
}else if(Character.isDigit(ch[i])) {
numcount++;
}else if(Character.isSpaceChar(ch[i])){
spacecount++;
}else {
othercount++;
}
}
System.out.println(abccount);
System.out.println(spacecount);
System.out.println(numcount);
System.out.println(othercount);
}
}
【程序8】
题⽬:求s=a+aa+aaa+a的值,其中a是⼀个数字。例如2+22+222+2222+22222(此时共有5个数相加),⼏个数相加有键盘控制。
import java.util.Scanner;
public class test08 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int Int();
int Int();
int sum=0,b=0;
for(int i=0;i<n;i++) {
b+=a;
sum+=b;
a=a*10;
}
System.out.println(sum);
}
}
【程序9】
题⽬:⼀个数如果恰好等于它的因⼦之和,这个数就称为 "完数 "。例如6=1+2+3.编程    出1000以内的所有完数。
public class test09 {
public static void main(String[] args) {
for(int i=1;i<=1000;i++) {
int t = 0;
for(int j=1;j<=i/2;j++) {
if(i%j==0) {
t+=j;
}
}
if(t==i) {
System.out.println(i);
}
}
}
}
【程序10】
题⽬:⼀球从100⽶⾼度⾃由落下,每次落地后反跳回原⾼度的⼀半;再落下,求它在 第10次落地时,共经过多少⽶?第10次反弹多⾼?
public class test10 {
public static void main(String[] args) {
double h=100;
double s=100;
for(int i=1;i<=10;i++) {
h=h/2;
s=s+2*h;
}
System.out.println(s);
System.out.println(h);
}
}
【程序11】
题⽬:有1、2、3、4四个数字,能组成多少个互不相同且⼀个数字中⽆重复数字的三位数?并把他们都输⼊。
public class test11 {
public static void main(String[] args) {
int count=0;
for(int i=1;i<5;i++) {
for(int j=1;j<5;j++) {
for(int k=1;k<5;k++) {
if(i!=j&&j!=k&&i!=k) {
count++;
System.out.println(i*100+j*10+k);
}
}
}
}
System.out.println(count);
}
}
【程序12】
dangerouslysetinnerhtml
题⽬:企业发放的奖⾦根据利润提成。利润(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%提成,从键盘输⼊当⽉利润,求应发放奖⾦总数?
import java.util.Scanner;
public class test12 {
public static void main(String[] args) {舍曲林早射服用量
Scanner input =new Scanner(System.in);
double Double();
double y=0;
if(x>0&&x<=10) {
y=x*0.1;
}else if (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;
}else if (x>40&&x<=60) {
y=10*0.1+10*0.075+20*0.05+(x-40)*0.03;
} else if (x>60&&x<=100) {
y=10*0.1+10*0.075+20*0.05+20*0.03+(x-60)*0.015;
}else if (x>100) {
y=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(x-100)*0.01;
}
System.out.println(y);
}
}
【程序13】
题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?
public class test13 {
public static void main(String[] args) {
for(int i=-100;i<10000;i++) {
if(Math.sqrt(i+100)%1==0&&Math.sqrt(i+268)%1==0) {
System.out.println(i);
}
strlder翻译中文}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。