Java 经典算法(二)

Java 经典算法(二)

【程序08】题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程找出1000以内的所有完数。


public class Java08 {
	public static void main(String[] args) {
		System.out.println("1000以内的完数如下:");
		for (int i = 1; i <= 1000; i++) {
			int sum = 0;
			for (int j = 1; j <i; j++)
				if (i % j == 0)
					sum = sum + j;
			if (sum == i)
				System.out.print(i+" ");
		}
		
	}
}

运行结果
1000以内的完数如下:
6 28 496 


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

public class Java09 {

	public static void main(String[] args) {
		for (int n = 100; n <= 999; n++) {
			int i = n / 100; // 得到百位数
			int j = n / 10 % 10; // 得到十位数
			int k = n % 10; // 得到个位数
			if (n == (i * i * i + j * j * j + k * k * k)) {
				System.out.println(n);
			}

		}
	}

}

运行结果
153
370
371
407

【程序10】题目:将一个数组逆序输出。

public class Java10 {

	public static void main(String[] args) {
      int [] s={1,2,3};
     for(int i=s.length-1;i>=0;i--){
    	 System.out.println(s[i]);
     }     
	}
}


【程序11】题目:对10个数进行排序


import java.util.Arrays;
import java.util.Scanner;

public class Java11 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入10个数:");
		int in[] = new int[10];
		for (int i = 0; i < 10; i++) {
			in[i] = sc.nextInt();
		}
		System.out.print("排序前:");
		for (int i = 0; i < in.length; i++) {
			System.out.print(in[i] + " ");
		}
		Arrays.sort(in);
		System.out.println();
		System.out.print("排序后,升序:");
		for (int i = 0; i < in.length; i++) {
			System.out.print(in[i] + " ");
		}
		System.out.println();
		System.out.print("排序后,降序:");
		for (int i = in.length - 1; i >= 0; i--) {
			System.out.print(in[i] + " ");
		}
	}

}

输入示例



【程序12】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 

public class Java12 {

	public static void main(String[] args) {
		double sum = 0;
		double mid = 100;  
		for(int i=1;i<=10;i++){
			sum += mid;
			mid =mid/2;
		}
		System.out.println("它在第10次落地时,共经过"+sum+"米,第10次反弹高为"+mid+"米。");
	}

}

输出
它在第10次落地时,共经过199.8046875米,第10次反弹高为0.09765625米。

【程序13】题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

import java.util.Scanner;

public class Java13 {
	public static void main(String[] args) {
		System.out.println("请输入某个学生的成绩");
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextInt()){
			int in = sc.nextInt();
			String res = null;
			res = in >= 90 ? "A" : (in >= 60 ? "B" : "C");
			System.out.println("学生成绩等级:" + res);
			
		}
		
	}

}

输入示例:



【程序14】题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同


import java.util.Scanner;
public class Java14 {

	public static void main(String[] args) {
		System.out.println("输入一个数字:");
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()) {
			int in = sc.nextInt();
			boolean res = solution(in);
			if (res) {
				System.out.println(in + "是回文数。");
			} else {
				System.out.println(in + "不是回文数。");
			}
		}

	}

	public static boolean solution(int x) {
		String str = String.valueOf(x);
		StringBuffer stringBuffer = new StringBuffer(str);
		String rs = stringBuffer.reverse().toString();
		if (rs.equals(str)) {
			return true;
		}
		return false;
	}
}

输入示例:


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值