- java例题
- 一、经典例题
- 1、java判断是否是闰年
- 2、求水仙花数
- 3、递归方法计算
- 4、求应发放奖金总数
- 5、组成互不重复的三位数
- 6、自由落体计算路程与反d高度
- 7、成绩分段表示
- 二、古典例题
- 1.计算兔子数量
- 总结
一、经典例题
本文记录了一些常见的java经典例题及其分析和代码示例。
1、java判断是否是闰年
题目:编写程序,判断给定的某个年份是否是闰年?
分析:什么是闰年?
(1) 若年份能被4整除,不能被100整除,则为闰年。
(2) 若年份能被400整除,则也是闰年。
代码如下(示例):
import java.util.Scanner;
public class Leapyear {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
if ((a%4==0&&a%100!=0)||a%400==0) {
System.out.println("yes");
}else {
System.out.println("no");
}
}
}
2、求水仙花数
题目:输出所有的水仙花数,所谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身。
分析:(1)3位数:100~999
(2)个位数³+十位数³+百位数³=本身
代码示例
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
int a=i/100;
int b=i/10%10;
int c=i%10;
if (i==a*a*a+b*b*b+c*c*c) {
System.out.println(i);
}
}
}
}
3、递归方法计算
题目:利用递归方法求n!
分析:n!=n*(n-1)(n-2)…*1.
代码示例:
public class Recursion {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要求的数n的值:");
int n=sc.nextInt();
int sum=n;
for (int i = n-1; i >=1; i--) {
sum=sum*i;
}
System.out.println(n+"!的值为:"+sum);
}
}
4、求应发放奖金总数
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
分析:使用if…else…语句将利润分为不同阶段的部分,进行分别计算。
代码分析:
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
double sum = 0;
if (k <= 10) {
sum = k * 0.1;
} else if (k < 20) {
sum = 1 + (k - 10) * 0.075;
} else if (k < 40) {
sum = 1 + 0.75 + (k - 20) * 0.05;
} else if (k < 60) {
sum = 1 + 0.75 + 1 + (k - 40) * 0.03;
} else if (k < 100) {
sum = 1 + 0.75 + 1 + 0.6 + (k - 60) * 0.015;
} else
sum = 1 + 0.75 + 1 + 0.6 + 0.6 + (k - 100) * 0.01;
sum=sum*10000;
System.out.println("应发奖金总数为" + sum);
}
}
5、组成互不重复的三位数
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 全排列减去不符合条件的。
分析:123、124、134…
从百位数开始分析1、2、3、4,然后十位数,最后个位数,满足题目要求。
代码示例:
public class Demo {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
if (i == j) {
continue;
}
for (int k = 1; k <= 4; k++) {
if (i == k || j == k) {
continue;
}
sum++;
int threenumber = i * 100 + j * 10 + k;
System.out.print(" " + threenumber);
if (sum % 5 == 0) {
System.out.println();
}
}
}
}
System.out.println();
System.out.println("能组成:" + sum + " 组无重复的三位数");
}
}
6、自由落体计算路程与反d高度
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在 第10次落地时,共经过多少米?第10次反d多高?
分析:100 50 25 12.5 …每次是前一次的一半
100 100 50 25 …开始时位于100米处,落地反d都有路程。
代码示例:
public class Demo11 {
public static void main(String[] args) {
double sum=100.0000000;
double num=0;
for (int i = 0; i < 10; i++) {
num=num+sum;
sum=sum/2;
}
System.out.println("共经过"+num+"米");
System.out.println("第十次反d"+sum+"米");
}
}
7、成绩分段表示
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
分析:使用if…else…语句进行分段判断,确定不同阶段的成绩表示方式。
可添加for循环语句进行循环多次判断。
代码示例:
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 99; i++) {
i = sc.nextInt();
if (i >= 90) {
System.out.println("A");
} else if (i > 60) {
System.out.println("B");
} else {
System.out.println("C");
}
}
}
}
二、古典例题
1.计算兔子数量
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?
分析: 简单计算前几个月的兔子数量:1,1,2,3,5,8 …
f(n)=f(n-1)+f(n-2)
代码示例:
import java.util.Scanner;
public class Rabbit {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(f(n));
}
static int f(int n) {
if (n == 1 || n == 2)
return 1;
else
return f(n - 1) + f(n - 2);
}
}
总结
以上是本人目前整理出来的java例题及其分析与代码示例,希望可以帮助各位,之后会不定时添加新的题例。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)