java经典50编程题(21-30)

  1. 求1+2!+3!+...+20!的和

分析过程:temp变量存阶乘过程中的暂时结果。乘完相加。

示例代码
java经典50编程题(21-30)_第1张图片

运行结果:
java经典50编程题(21-30)_第2张图片

反思拓展:这次直接在电脑上新建md文件,与之前在手机上新建不一样,为此还特地去学一下md语法。int类型的数不能存下20!大小,需要long类型变量存储结果。int32只能的最大无符号整型数为2^32-1,注意。

  1. 利用递归方法求5!。

分析过程:n==1的时候会退出递归,这是递归的结束点。其他条件就是向上递归或向下递归。条件也要相应的做一些改变。

示例代码
java经典50编程题(21-30)_第3张图片

运行结果:
java经典50编程题(21-30)_第4张图片

反思拓展:第一次在java中用递归,挺不熟练的。大致结构应该就是这样了吧。

  1. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

分析过程:for 5次就ok

示例代码
java经典50编程题(21-30)_第5张图片

运行结果
java经典50编程题(21-30)_第6张图片

反思拓展:没意思。

  1. 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

分析过程:对10取余,除以10后得商成为新数。进入下一轮循环。

示例代码
java经典50编程题(21-30)_第7张图片

运行结果:
java经典50编程题(21-30)_第8张图片

反思拓展:之前在leetcode上写到过,用py3写的,比这要复杂点。逆序数首位不能为0。

  1. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

分析过程:首尾比较,一直比较到最后,中间的那一位。

示例代码
java经典50编程题(21-30)_第9张图片

运行结果
java经典50编程题(21-30)_第10张图片

反思拓展:与py是真的不同,好多东西得自己写。然后逻辑结构也不一样了。

  1. 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母

分析过程:switch语句搞定。

示例代码
java经典50编程题(21-30)_第11张图片

运行结果
java经典50编程题(21-30)_第12张图片

反思拓展:啰嗦的代码

28.求100之内的素数.

分析过程:100内的数,只要判断是不是能过被2,3,5,7整除。当大于100时,就不行了。

示例代码
java经典50编程题(21-30)_第13张图片

运行结果
java经典50编程题(21-30)_第14张图片

反思拓展:新求的素数,加入到2,3,5,7这样的数组中,在判断后面的数能不能被这个数组内的数整出。

  1. 对10个数进行排序

分析过程:排序算法有好多种。你知道吗?

示例代码
java经典50编程题(21-30)_第15张图片

运行结果
java经典50编程题(21-30)_第16张图片

反思拓展:在最后输出的时候,以空格分隔,使用的是double comma,and single comma will cause another problem.

  1. 求一个3*3矩阵对角线元素之和

分析过程: 对角线元素分别是第1,5,9元素,并且横纵数字相等。

示例代码
java经典50编程题(21-30)_第17张图片

运行结果
java经典50编程题(21-30)_第18张图片

反思拓展:好久没写了,突然特别有感觉。

30.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

分析过程:对于第一个数,小于它就要插在最前面,对于最后一个数,大于它则插在最后面。中间的部分,左看看,右看看,哪里适合插哪里。

示例代码
java经典50编程题(21-30)_第19张图片

运行结果
java经典50编程题(21-30)_第20张图片



反思拓展:一开始写的时候,逻辑不清楚,部分情况重复。实际上,在判断最后一个元素与插入大小,不能写在for里面。但这又算是一种重复。查找元素位置,用对半查找法会更快。还有py几句就能搞定,java写了40多行。

你可能感兴趣的:(java经典50编程题(21-30))