道
基础编程训练
【程序
】
题目:古典问题:有一对兔子,从出生后第
个月起每个月都生一对兔子,小兔子长到第三个月后每个月
又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:
兔子的规律为数列
解答:
(方法一)
利用数学分析可得知:这个月的兔子数量为前两个月的兔子数量之和,推导过程如下:
,
,
,
,
,
,
:表示一个月大的兔子;
表示两个月大的兔子;
表示三个月及三月以上的兔子。
有以下数学表达式:
,
,
,
,
因此上面每个月的兔子的数量满足斐波那契数列。编程实现较为简单,此处省略。
(方法二)
方法二利用编程实现,具有一般性(开始兔子个数和产仔周期可自行输入),程序设计如下:
【程序
】
题目:判断
之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除
到
这个数
,如果能被整除,
则表明此数不是素数,反之是素数。
解答:
程序如下:
【程序
】
题目:打印出所有的
水仙花数
,所谓
水仙花数
是指一个三位数,其各位数字立方和等于该数本身。例
如:
是一个
水仙花数
,因为
的三次方+
的三次方+
的三次方。
程序分析:利用
循环控制
个数,每个数分解出个位,十位,百位。
解答:
程序如下:
【程序
】
题目:将一个正整数分解质因数。例如:输入
打印出
。
解答:
分析:对
进行分解质因数,应先找到一个最小的质数
,然后按下述步骤完成:
如果这个质数恰等于
,则说明分解质因数的过程已经结束,打印出即可。
如果 !
,但
能被
整除,则应打印出
的值,并用
除以
的商
作为新的正整数你
重复执行第一
步。
如果
不能被
整除,则用
作为
的值
重复执行第一步。
【程序
】
题目:利用条件运算符的嵌套来完成此题:学习成绩
! 分的同学用
表示,
" 分之间的用
# 表示,
"
分以下的用 $
表示。
解答:
【程序
"】
题目:输入两个正整数
% 和
,求其最大公约数和最小公倍数。
&
求最大公约数!
算法(
1)设计:
E0.[
确保 mErr
or:
R
e
ference
sour
ce
not
found
n]
若 mErr
or:
R
eference
source
not
found
n
,则
mErr
or: R
efer
ence sourc
e not foundn
。
E1.[
求余数]
以 n
除 m
并令 r
为所得余数。(我们将有 0Err
or: Refer
ence
source not
found
rErr
or
:
R
efere
nce source not foundn
。)
E2.[
余数为 0?]
若 r
为 0
,算法结束,n
即为所求答案。
E3.[
减少]
置 mErr
or: Re
ference
source not
f
oundn
,nErr
or: Refer
ence
source not
f
oundr
,并
返回步骤
E1。
数学证明:
(1)
若 m%n=0
,则 n
为所求最大公因子
(2)
若 m%nErr
or: R
e
ference sourc
e not found
0
,则只需证明下面命题成立
如果某数是
n 与
m%n 的
最大公因子,则这
个数也是
m 和
n 的
最大公因子。
(上面算
法可化为这
句话
)
证明:
假设
a 是
n 和
m%n 的最大公因子,则有:
因
有
(m%n)%a=0 ,
故
可
设
m
%n=k*a
, k
为 正 整 数 。 又 n
%a=0
,故可设 n=p*a
,p
也为正整数。
可得数学表达式:
m=t*n+m%n,其中
t 为不小于
0 的整数。
因此有:
m=t*p*a+k*a=(t*p+k)*a,因此可得
m%a=0
因此有如下两个表达式:
a
为 m
和 n
的公因子已经证毕。
如
何
确
定
a 为
m 和
n 的
最
大
公
因
子
(可用反证法证明)
证明:
假设
m 和
n 存在公因子
b,且有
b>a。
则有
:
可以仿照上面的推导过程得出:
则
b 也
是
n 和
m%n 的
公
因
子
,
又
b>a,
与
a 是
n 和
m%n 的
最
大
公因子矛盾。
综上,如果某数是
n 与
m%n 的最大公因子,则这个数也是
m 和
n 的最大公因子。
(3)
证毕。
对步骤
E0 的分析:
若
m<n ,
则
m%n=m 。
当
进
行
E0 后
,
m 为
较
大
者
,
m%nError: Reference source not
foundn
。
算法(
2)设计:
余数
以
除
,并令
为余数。
它是
如果
,则此算法以
为答案而终止。
余数
以
除
,并令
是余数。
它是
如果
,则算法以答案
而终止,否则返回步骤
。
算法(
2)可仿照算法(
1)进行证明
<
求最大公倍数>
算法设计:
F1
:求出 % 和 的较大者,令较大者为 %,较小者为 。
'
:判断 %
能否被
整除,若能则 %
为两者最小公倍数。
'
:将
分解因式。
'
:将 %
依次乘以
的因子,判断乘积能否被
整除,若能则乘积为两者最小公倍数。
根据上面的算法,程序如下:
【程序
(】
题目:输入一行字符,分别统计出其中
英文字
母、空格、数字和其它字符的个数。
解答:
这题需
要对
汉字的
内码进行一定的
了解,
汉字
占两个字
节,每个字
节的开始位为
。程序如下:
【程序
】
题目:
求
))))))))))))) 的值,
其中
) 是一
个数字。
例如
此
时共有
个数
相加,
几个数
相加有
键盘控制。
解答:
在此题中,利用进行字符
串运算的
“”运算符,然后将字符
串转为数字,实现
了程序过程,程序设计如下:
【程序
】
题目:一个数如果恰
好等于它的因子之和,这个数
就称为
完数
。例如
"+
+
编程
找出
以
内的
所有完数。
解答:
根据题目
意思,设计程序如下:
【程序
】
java基础50道
题目:一
球从
米高度自
由落下,每次
落地后反
跳回
原高度的一
半;
再落下,求它在
第
次
落地时,
共
经过多少米
?第 次反弹
多高
?
解答:
此题较为简单,程序设计如下:
【程序
】
题目:有
、、、 个数字,能
组成多少个
互不
相同且
无重复数字的三位数?都是多少?
解答:
理
解好排
列组合
,可设计程序如下:
满足条件的三位数是:
234
243
324
342
423
432
134
143
314
341
413
431
124
142
214
241
412
421
123
132
213
231
312
321
【程序
】
题目
:
企业发放的
奖金根据
利
润提成。
利
润*低于
或等于
万元时,
奖金可
提 +;利
润高于
万元,
低
于 万元时
,低
于 万元
的部
分按 +提
成,高
于 万元
的部
分,可可提
成 (+; 万
到 万
之
间
时,
高于
万元的
部分
,可
提成
+;
万到
" 万之间
时高于
万元的
部分
,可
提成
+;
" 万到
万之间时,高于 "
万元的部分,可提成 +
,高于
万元时,超过
万元的部分按 +
提成,
从
键盘输入当月利
润 *,求应
发放奖金总数?
解答:
此题较为简单,
注意定
义时需
把奖金定
义成长整
型。程序设计如下:
【程序
】
题目:一个整数,它
加上
后是一个完
全平方数,
再加上
" 又是一个完
全平方数,
请问该数是多少?
解答:
可先对问题进行
适当分析,分析
情况如下:
假设整数为
,第一个完
全平方数为
,,第二个完
全平方数为
-,则有下面的
关系式。
,
"-
将两个式子
相减,
再进行
适当的数学
变形可得:
-,-,"
得出可被
" 整除的数(前面已经编程实现),令
-,,
-,。
则有
-.(
- 需为正整数),则有
--"。则可得出答案。
程序设计如下:(一般性程序,两个数可以自
己输入)
【程序
】
题目:输入某
年某月某
日,判断这一
天是这一
年的第
几天?
解答:
闰年
的判断,可根据以下三点
进行判断。
1
、普通年能被 4
整除且不能被 1
0
0
整除的为闰年。(如 2
0
0
4
年就是闰年,
1
9
0
0
年不是闰年)
2
、世纪年能被 4
0
0
整除的是闰年。(
如 2
0
0
0
年是闰年,1
9
0
0
年不是闰年)
3
、对于数值很大的年份,
这年如果能整除 3
2
0
0
,
并且能整除 1
7
2
8
0
0
则是闰年。如 1
7
2
8
0
0
年是闰
年
,86400 年
不是闰
年
(因为虽
然能整除 3200,但不能整除 172800)
分
析
:
利
用
类中
进行数据的
读取,
由于是
连续输入而且输入
中有
汉字,故
这
种方法不行
。
程序
设计
需
要改进,
现
利用
isDigit 方
法进
行程
序设
计,
达
到
了较
为
理想的
结
果,
程
序如
下
所示
。
(
此
程
序
中
有
一
段代码是
对
字
符
串中
的
数
字
进
行
提取,
如
年 月
日提取三
个
数
字
分
别
为
:
、
、
)
输入
日期:
年月
日
年
月
日是这一年的第
天。
输入
日期:
!
!
是这一年的第 !
天。
【程序
】
题目:输入三个整数
/01,
请把这三个数
由小到大输出。
解答:
利用
类中
进行数据的
读取,
"#sort进行
排序,程序设计如下:
【程序
"】
题目:输出
口诀。
程序分析:分行与列考虑,共
行
列,2
控制行,3
控制列。
解答:
此题较为简单,程序设计如下:
【程序
(】
题目
:
猴子
吃桃问题
:
猴子第
一
天摘下若
干个
桃子,
当即
吃了一
半,
还不
瘾,
又多
吃了一个
第二
天早上
又将
剩下的
桃子
吃掉一
半,又多
吃了一个。
以后每
天早上
都
吃了前一
天剩下
的一
半零一个。到第
天早
上
想再吃时,
见只
剩下一个
桃子
了。求第一
天共摘了多少。
解答:
分析:
采取逆向思维的方法,从后
往前推断。
【程序
】
题目:两个
乒乓球队进行
比赛,各出三
人。
甲队为
)45 三
人,
乙队为
/01 三
人。已
抽签决定
比赛名单。
有
人向队员打
听比赛的
名单。
) 说
他不和
/ 比,
5 说
他不和
/1 比,
请编程序找出三
队赛手的
名单。
解答:
分析:
其实问题可
转化为
排列
组合问题,
) 可
以
选 /01 中的一
个,
4 可以
选剩下
两个中的一个
,而
5 只能
选最后
剩
下的一个,总共
有 " 中可能。关
于排
列的实现可以参
照程序 ,具体
程序如下:
$ % &
a(vs)z b(vs)x c(vs)y
【程序
】
题目:打印出如下
图案(
菱形)
666
66
6
6
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/971.html