【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
package suanfa50;
/**
* 斐波那契数列
* 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
* 假如兔子都不死,问每个月的兔子总数为多少?
* @author ASUS
*
*/
public class test01 {
public static void main(String[] args){
int f1 = 1, f2 = 1, f;
int Month = 30;
for(int i = 3; i < Month; i++){
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println(f2);
}
}
}
输出:
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
package suanfa50;
/**
* 判断101-200之间有多少个素数,并输出所有素数。
* @author ASUS
*
*/
public class test02 {
public static void main(String[] args){
int count = 0;
for(int i = 101; i < 200; i++){
boolean flag = true;
for(int j = 2;j < Math.sqrt(i); j++){
if(i % j == 0){
flag = false;
break;
}
}
if(flag){
count++;
System.out.println(i + "是素数");
}
}
System.out.println("素数的总数是:" + count);
}
}
输出:
101是素数
103是素数
107是素数
109是素数
113是素数
121是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
169是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数
素数的总数是:23
【程序3】
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
package suanfa50;
/**
* 打印出所有的 "水仙花数 ",
* 所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
* @author ASUS
*
*/
public class test03 {
public static void main(String[] args){
int a, b, c;
for(int i = 101; i < 1000; i++){
a = i / 100;//百位
b = i / 10 % 10;//十位
c = i % 10;//个位
if(a*a*a + b*b*b + c*c*c == i){
System.out.println(i + "是水仙花数");
}
}
}
}
输出:
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n > k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
package suanfa50;
/**
* 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
* @author ASUS
*
*/
public class test04 {
public static void main(String[] args){
int n = 90;
int k = 2;
while(n >= k){
if(n == k){
System.out.println(k);
break;
}else if(n%k == 0){
System.out.println(k);
n = n / k;
}else{
k++;
}
}
}
}
输出:
2
3
3
5
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
import java.util.Scanner;
public class test05 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int score=input.nextInt();
char grade=score>=90?'A':score>=60?'B':'C';
System.out.println(grade);
}
}
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
package suanfa50;
import java.util.Scanner;
/**
* 输入两个正整数m和n,求其最大公约数和最小公倍数。
* @author ASUS
*
*/
public class test04{
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int a=input.nextInt();
int b=input.nextInt();
test04 test=new test04();
int i = test.gongyinshu(a, b);
System.out.println("最小公因数"+i);
System.out.println("最大公倍数"+a*b/i);
}
public int gongyinshu(int a,int b) {
if(a<b) {
int t=b;
b=a;
a=t;
}
while(b!=0) {
if(a==b)
return a;
int x=b;
b=a%b;
a=x;
}
return a;
}
}
输出:
5
8
最小公因数1
最大公倍数40
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
package suanfa50;
import java.util.Scanner;
/**
* 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
* @author ASUS
*
*/
public class test04{
public static void main(String[] args) {
int abccount=0;
int spacecount=0;
int numcount=0;
int othercount=0;
Scanner input=new Scanner(System.in);
String toString=input.nextLine();
char [] ch=toString.toCharArray();
for(int i=0;i<ch.length;i++) {
if(Character.isLetter(ch[i])) {
abccount++;
}else if(Character.isDigit(ch[i])) {
numcount++;
}else if(Character.isSpaceChar(ch[i])){
spacecount++;
}else {
othercount++;
}
}
System.out.println(abccount);
System.out.println(spacecount);
System.out.println(numcount);
System.out.println(othercount);
}
}
输出:
eqw6786 dsds
7
1
4
0
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
package suanfa50;
import java.util.Scanner;
/**
* 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加)
* @author ASUS
*
*/
public class test04{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int a=input.nextInt();
int n=input.nextInt();
int sum=0,b=0;
for(int i=0;i<n;i++) {
b+=a;
sum+=b;
a=a*10;
}
System.out.println(sum);
}
}
输出:
2
5
24690
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
package suanfa50;
import java.util.Scanner;
/**
* 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程
* @author ASUS
*
*/
public class test04{
public static void main(String[] args) {
for(int i=1;i<=1000;i++) {
int t = 0;
for(int j=1;j<=i/2;j++) {
if(i%j==0) {
t+=j;
}
}
if(t==i) {
System.out.println(i);
}
}
}
}
输出:
6
28
496
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
package suanfa50;
import java.util.Scanner;
/**
* 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程
* @author ASUS
*
*/
public class test04{
public static void main(String[] args) {
double h=100;
double s=100;
int n = 10;
for(int i=1;i<=n;i++) {
h=h/2;
s=s+2*h;
}
System.out.println(s);
System.out.println(h);
}
}
输出:
299.8046875
0.09765625