文章目录
- 前言
-
-
- 1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
- 2.判断101-200之间有多少个素数,并输出所有素数。
- 3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
- 4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
- 5.学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
- 6.输入两个正整数m和n,求其最大公约数和最小公倍数。
- 7.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 8.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
- 9.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
- 10.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
-
- 总结
前言
因为最近在练习Java编程,看了一个写有50道题的大体量作业,想练练手,而且我看这50道题是五、六年前的了(我不太清楚csdn里有没有很新的答题方法,没有仔细搜),其给的答案我看着有点复杂(可能是太多了,我不想认真看),我就想着用最近所学的重新写一遍看看。
如果我写的程序有什么漏洞的话,请大家务必指出,我自己看自己的程序肯定是看不出什么名堂来的(除非它是飘红了)。
下面我给的代码都是我自己编写(当然不排除有些题想不出来,去网上找的),并在idea上运行一遍了,可以出结果的,并配有详细注释(就算现在没有,之后也会加上的)。
个人感觉写注释还是蛮好的,可以加强个人理解。(注释是给小白看的,如果真的想要更好的理解代码,建议先自己看代码,实在是理解不了再看注释)
因为题目很多,有的和我之前做的重复了,不过还是放这了,同一道题,过几天再写,感触也有所不同。
废话有点多,下面正式开始。
1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析:
第一个月1对
第二个月1对
第三个月 2 对(1+1)
第四个月 3 对(2+1)
第五个月 5 对(3+2)
第六个月 8 对(5+3)
相信到这里,大家就可以看出来了,实际上不用管什么时候兔子开始生啊,每个月有几对兔子生,
这就是一道找规律的数学题而已,不要把自己搞懵了。
这个月的兔子数 = 上个月的兔子数 + 上上个月的兔子数*/
import java.util.Scanner;
public class The01 {
public static void main(String[] args){
//Scanner类获取输入固定用法 Scanner sc = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
//输入月份
System.out.println("请输入查询的月份");
int n = sc.nextInt();
System.out.println("第"+n+"月份有"+rabbit(n)+"对兔子");
}
static int rabbit(int n){
//这里n为形参,n为a,c,d之类的都行,记得如果改的话,下面的也要改
//如果是第一个月或是第二个月
if(n==1 || n==2) {
//返回值1:就一对
return 1;
}else {
//不是的话执行如下 返回上个月的加上上上个月的
return rabbit(n-1)+rabbit(n-2);
}
}
}
2.判断101-200之间有多少个素数,并输出所有素数。
程序分析:
像这样的判断一个数到一个数之间的这样类型的题,首先想到用“for循环”来写,因为for循环可以直接遍历出来。(如果不知道for循环是怎么循环的,可以看我之前写的文章,也可以上网搜)
素数:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
这里用该数除以另外一个数,如果能够整除,说明该数不是素数。
public class The02 {
public static void main(String[] args){
//循环遍历
for(int i=101;i<=200;i++){
//参数m,记录该数有多少个能够被整除的数
int m = 0;
//遍历被除数,从2开始,1不算(懂的都懂)
//这里从1开始,也行,不过下面的if语句就是m=1了
for (int j=2;j<i;j++){
//能够整除,m+1
if(i%j==0){
m++;
}
}
//素数是指一个能被整除的都不能有
if(m==0){
//输出素数
System.out.println(i);
}
}
}
}
3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:
打印出所有的水仙花数,就是要遍历了,不然一个个的太麻烦
上面说水仙花数是一个三位数,就给定了范围100~999
上面又说到三次方,利用Math函数里的pow()方法
public class The03 {
public static void main(String[] args){
//遍历,注意是<1000,实际上就是<=999,因为是int类型,整数
for(