【程序1】
题目:古典问题:有一对兔子 ,从出生后第 3个月起每 个月都生一 对兔子,小兔子长到 第三个月后 每个月又生 一对兔子,假如兔子都 不死,问每个月的 兔子总数为 多少? //这是一个菲 波拉契数列 问题
i01 { g[] args) { ln(\第1个月的 兔子对数: 1\ ln(\第2个月的 兔子对数: 1\int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2;
f2 = f1 + f2; f1 = f; ln(\第\个月的兔子 对数: \ } } }
【程序2】 题目:判断 -200之间 有多少个素 数,并输出所有 素数。 程序分析:判断素数的 方法:用一个数分 别去除2到 sqrt(这个数),如果能被整 除, 则表明此数 不是素数,反之是素数 。 i02 { g[] args) { = 0;
for(int i=101; i<200; i+=2) { ;
for(int j=2; j<=Math.sqrt(i); j++) {
if(i ; } else { b = true; } }
ln(i );} } ln( \素数个数是 ); } }
【程序3】
题目:打印出所有 的 \水仙花数 \,所谓 \水仙花数 \是指一个三 位数,其各位数字 立方和等于 该数本身。例如:153是一 个 \水仙花数 \,因为 =1的三次方 +5的三次方 +3的三次方 。 i03 { g[] args) { int b1, b2, b3;
for(int m=101; m<1000; m++) { b3 = m / 100;
b2 = m % 100 / 10; b1 = m % 10;
if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m) { ln(m+\是一个水仙 花数\ } } }
【程序4】
题目:将一个正整 数分解质因 数。例如:输入90,打印出 =2*3*3*5。 程序分析:对n进行分 解质因数,应先找到一 个最小的质 数k,然后按下述 步骤完成: (1)如果这个质 数恰等于 ,则说明分解 质因数的过 程已经结束 ,打印出即可 。 (2)如果n <> k,但n能被 整除,则应打印出 k的值,并用n除以 k的商,作为新的正 整数你n,重复执行第 一步。 (3)如果n不能 被k整除,则用k+1作为k的 值,重复执行第 一步。 t java.util.*; i04{ g[] args) { er s = new Sc m.in); ( \请键入一个 正整数: \ nt(); int k=2; (n + \ (k <= n) { ;} els (k + \ else k++; } } }
【程序5】
题目:利用条件运 算符的嵌套 来完成此题 :学习成绩> =90分的同 学用A表示 ,60-89分之间 的用B表示 ,60分以下 的用C表示 。 t java.util.*; i05 { g[] args) { int x; ; m.in); ( \请输入一个 成绩: \ nt(); = x >= 90 ? 'A' : x >= 60 ? 'B'
:'C'; ln(\等级为: ); } }
【程序6】
题目:输入两个正 整数m和 ,求其最大公 约数和最小 公倍数。 /**在循环中,只要除数不 等于0,用较大数除 以较小的数 ,将小的一个 数作为下一 轮循环的大 数,取得的余数 作为下一轮 循环的较小 的数,如此循环直 到较小的数 的值为0,返回较大的 数,此数即为最 大公约数,最小公倍数 为两数之积 除以最大公 约数。* / t java.util.*; pub i06 { g[] args) { int a ,b,m; m.in); ( \键入一个整 数: \ nt(); ( \再键入一个 整数: \ nt();
deff cd = new deff(); m = cd.deff(a,b); int n = a * b / m; ln(\最大公约数 : \ ln(\最小公倍数 : \} } deff{ c int deff(int x, int y) { int t;
if(x < y) { t = x; x = y; y = t; } (y != 0) { n x; else {
int k = x % y; x = y; y = k; } } n x; }
}
【程序7】
题目:输入一行字 符,分别统计出 其中英文字 母、空格、数字和其它 字符的个数 。 t java.util.*; c c i07 { g[] args) { al = 0; cter = 0; = 0; = 0;
char[] ch = null; m.in); ine(); y(); h; i++) { if(ch >= '0' && ch <= '9') { al ++;
} else if((ch >= 'a' && ch <= 'z') || ch > 'A' && ch <= 'Z') { cter ++;
} else if(ch == ' ') { ++; } else { ++; } } ln(\数字个数 al); ln(\英文字母个 数 cter); ln(\空格个数 ); ln(\其他字符个 数 ); } }
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一 个数字。例如 (此时共有 个数相加),几个数相加 有键盘控制 。 t java.util.*; i08 { g[] args) { long a , b = 0, sum = 0; m.in); m.ou (\输入数字 的值: \ nt(); (\输入相加的 项数:\ nt(); int i = 0;
(i < n) { b = b + a;
sum = sum + b; a = a * 10; ++ i; } ln(sum); } }
【程序9】
题目:一个数如果 恰好等于它 的因子之和 ,这个数就称 为 \完数 \。例如6=1+2+3.编程 找出 0以内的所 有完数。 i09 { g[] args) { ln(\到 0的完数有 : \ for(int i=1; i<1000; i++) { int t = 0;
for(int j=1; j<= i/2; j++) { if(i % j == 0) { t = t + j; } }
if(t == i) { (i + \\ } } }
【程序10】 题目:一球从 0米高度自 由落下,每次落地后 反跳回原高 度的一半;再落下,求它在 第10次落 地时,共经过多少 米?第10次反 弹多高? i10 { g[] args) { e h = 100,s = 100; for(int i=1; i<10; i++) { s = s + h; h = h / 2; } ln(\经过路程:\ ln(\反弹高度:\} }
【程序11】 题目:有1、2、3、4四个数字 ,能组成多少 个互不相同 且无重复数 字的三位数 ?都是多少? i11 {
竞赛java编程题50题(有答案)



