Java编程50题 (1-25)代码/思路/注释/结果

首先说明,题目都是网上的,解这五十题的博客也很多。

为什么还要写出来,原因有二,一是这些题目基本是我自己复现的,于我而言有被记录的价值,二是我提供了结果、思路,有些题目还有多种方法,也许能在别人的基础上提供一些不同的思路。

总体而言这些题还是比较适合初学者的,能够加深对Java基本语法的理解,掌握一些经典的小题目,这些小题目看着简单,其实一些公司也会作为入职的笔试题,我就遇到过几次。

由于篇幅实在过长,当然可能是我书写习惯导致。本文分为两部分,这是上篇,包括1-25题

下篇见:https://blog.csdn.net/sinat_28576553/article/details/117234796

具体包括:001-菲波拉契数列,002-素数的判断,003-水仙花数,004-分解质因数,005-条件运算符的嵌套,006-最大公约数和最小公倍数,007-字符统计,008-求s=a+aa+aaa+aaaa+aa...a,009-完数,010-球体下落路程和反弹高度,011-无重复数字三位数,012-企业发放的奖金,013-关于完全平方数,014-判断第几天,015-三数排序,016-9*9口诀,017-猴子吃桃问题,018-赛程搭配,019-图形打印,020-数列求和,021-多阶乘相加问题,022-递归方法求阶乘,023-递归求年龄,024-整数逆序输出,025-回文数的判断。

当然由于行笔匆忙,自然会有笔误、错误和不足之处,还望指正。

 

001-菲波拉契数列

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?用对数(1对2对)来统计,这是一个菲波拉契数列问题。

public class Practice001 {
	
	public static void main(String[] args) {
		
		System.out.println("第1个月的兔子对数是:1");
		System.out.println("第1个月的兔子对数是:1");
		
		int f1 = 1, f2 = 1, f3;
		
		//注意i从3开始
		for(int i = 3; i <= 20; i++ ) { //50突破了int的容量限制
			
			f3 = f1 + f2;
			f1 = f2;
			f2 = f3;		
			System.out.println("第"+i+"个月的兔子对数是:"+f3);
		}		
	}
//	第1个月的兔子对数是:1
//	第1个月的兔子对数是:1
//	第3个月的兔子对数是:2
//	第4个月的兔子对数是:3
//	第5个月的兔子对数是:5
//	第6个月的兔子对数是:8
//	第7个月的兔子对数是:13
//	第8个月的兔子对数是:21
//	第9个月的兔子对数是:34
//	第10个月的兔子对数是:55
//	第11个月的兔子对数是:89
//	第12个月的兔子对数是:144
//	第13个月的兔子对数是:233
//	第14个月的兔子对数是:377
//	第15个月的兔子对数是:610
//	第16个月的兔子对数是:987
//	第17个月的兔子对数是:1597
//	第18个月的兔子对数是:2584
//	第19个月的兔子对数是:4181
//	第20个月的兔子对数是:6765
}

002-素数的判断

题目:判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

注:什么是素数?素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

public class Practice002 {
	
	public static void main(String[]args) {
		
		int n = 100;
		boolean temp = true; //标志
		
		for(int i = 1; i <= 100; i++){  //外循环用来控制测试,100次就是101-200
			
			n=n+1;
			
			for(int j = 2; j <= Math.sqrt(n); j++) { //sqrt需要使用使用Math大类调用,不需要引入类。
				
				if(n % j == 0) {
					temp = false;
					break;
				}			
			} //内循环
			
			if(temp == true) {
				System.out.println("这个数是素数  "+n);
			}
			temp=true;
			
		} //外循环
	}//主方法
	
//	这个数是素数  101
//	这个数是素数  103
//	这个数是素数  107
//	这个数是素数  109
//	这个数是素数  113
//	这个数是素数  127
//	这个数是素数  131
//	这个数是素数  137
//	这个数是素数  139
//	这个数是素数  149
//	这个数是素数  151
//	这个数是素数  157
//	这个数是素数  163
//	这个数是素数  167
//	这个数是素数  173
//	这个数是素数  179
//	这个数是素数  181
//	这个数是素数  191
//	这个数是素数  193
//	这个数是素数  197
//	这个数是素数  199

}  

003-水仙花数

题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

public class Practice003 {
	
	public static  void main(String[] args) {
		
		int a,b,c,n,i;
		//三位数就是100-999
		for(n = 100; n < 1000; n++) {
			
			//需要一个中间变量,来保存n
			i = n;
			a = i % 10; //求余,取出个位数
			i = i / 10; //除,都是整数,就是整除,相当于剔除个位数
			b = i % 10; //取出十位数	
			i = i / 10;  //剔除十位数
			c = i % 10; //取出百位数
			
//			c = i / 10;
			
			if(Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) {
				System.out.print(n+"   ");
//				153   370   371   407  
			}			
		}		
	}
}

004-分解质因数

题目:对任意整数n分解质因数。

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

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

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

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

从某一合数中 找出质因数来 拿它除以质因数 再从分解过的合数中找出质因数来 再拿它除以质因数 一直到最后分解出质数来为止。

public class Practice004 {
	
	public static void main(String[]args) {
		
		Scanner it =  new Scanner(System.in);
		System.out.println("请输入你想要分解的
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值