Java经典习题(3)

11.中国古代算书《张丘建算经》中有一道著名的百鸡问题:公鸡每只值5
文钱,母鸡每只值3 文钱,而3 只小鸡值1 文钱。用100 文钱买100 只鸡,问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?

程序分析:这个题目需要利用嵌套的for循环来解决,x表示公鸡的只数,y表示母鸡的只数,z表示小鸡的只数。x、y、z都是从0循环到100,需要满足3个条件:a)x+y+z==100; b)5*x+3*y+z/3==100; c)z%3==0 。

public class Question11 {

	public static void main(String[] args) {
		for (int x = 1; x <= 20; x++) {
			for (int y = 1; y <= 33; y++) {
				for (int z = 1; z <= 100; z++) {
					if ((z % 3 == 0) && (x + y + z == 100)
							&& (5 * x + 3 * y + z / 3 == 100)) {
						System.out.println("公鸡有" + x + "只,母鸡有" + y + "只,小鸡有"
								+ z + "只。");
					}
				}
			}
		}
	}

}

12.程序接收一个正整数n。

如果n=3,就打印

*

***

*****

如果n=4,就打印

*

***

*****

*******

程序分析:程序接收的正整数n即代表有多少行,现在的问题是求解对于行i来说,它应该打印多少个*号,我们可以发现一个规律,每行打印的*号的数量,是每次都累加2。

import java.util.Scanner;

public class Question12 {

	public static void main(String[] args) {
		int n; // 代表总行数
		int m = -1; // 代表每行的*号数量

		System.out.println("请输入正整数n:");
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();

		for (int i = 1; i <= n; i++) {
			m = m + 2;
			for (int j = 1; j <= m; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

}

13.编写Java程序输出99乘法表。

程序分析:首先我们来看一下99乘法表的样子,然后发现规律

1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9

1×4=4 2×4=8 3×4=12 4×4=16

1×5=5 2×5=10 3×5=15 4×5=20 5×5=25

1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36

1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49

1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64

1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81

通过以上的表我们不难发现,一共有9行,每一行的行号i将作为乘数,而被乘数则从1变化到i。

public class Question13 {

	public static void main(String[] args) {

		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(" " + j + "*" + i + "=" + (i * j) + " ");
			}
			System.out.println();
		}

	}

}

14.程序接收一个正整数n,输出n各个位数上的数字相加之和。(注意n是任意位数)

程序分析:因为int类型表示的数值范围有限,所以不能用int来记录输入的正整数n,可以采用字符串String类型的变量来记录,然后将每个位上面的数字通过for循环读取出来累加。

public class Question14 {

	public static void main(String[] args) {

		System.out.println("请输入正整数n:");

		Scanner sc = new Scanner(System.in);
		String str = sc.next();

		int sum = 0;

		for (int i = 0; i < str.length(); i++) {
			String ch = str.substring(i, i + 1);
			int temp = Integer.valueOf(ch);
			sum += temp;
		}

		System.out.println(str + "的各个位数相加之和是:" + sum);

	}

}

15.

计算圆周率:

中国古代数学家研究出了计算圆周率最简单的办法:

PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17......

这个算式的结果会无限接近于圆周率的值,我国古代数学家祖冲之计算出,圆周率在3.1415926和

3.1415927之间,请编程计算,要想得到这样的结果,他要经过多少次加减法运算?

程序分析:需要利用while循环来做,发现规律是被除数永远是4,而除数会每次递增2,所以程序如下:

public class Question15 {

	public static void main(String[] args) {

		final double a = 4.0; //表示被除数

		double PI = 0; //表示圆周率

		int b = -1; //表示除数

		int count = 0; //加减法次数计数变量

		while (PI >= 3.1415927 || PI <= 3.1415926) {
			b +=2;
			PI	= PI+ a/b;
			count++;
			b +=2;
			PI = PI - a/b;
			count++;
		}

		System.out.println("总共需要经过" + count +"次加减法运算");

	}

}

Java经典习题(3)

时间: 2024-11-10 00:13:32

Java经典习题(3)的相关文章

Java经典习题(2)

6.输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. 程序分析:从控制台获取一行输入,然后对String字符串的内容进行判断,统计每种字符的个数,直到遇到回车"\n"为止. import java.util.Scanner; public class Question6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next

Java经典习题(1)

1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数是多少对? 程序分析:每个月兔子总数是1,1,2,3,5,8,13,21--发现规律,从第三个月开始,每个月的兔子总数是前两个月的兔子总数的和.(这个数列其实是斐波那契数列) public class Question1 { public static void main(String[] args){ Scanner in = new Scanner(Sys

Java经典习题7

/*题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数.*/ import java.util.*; public class Class7 { public static void main(String[] args){ int zimu = 0; int kongge = 0; int shuzi = 0; int qita = 0; char[] ch = null; System.out.println("请输入:"); Scanner s = new S

Java经典习题6

/*题目:输入两个正整数m和n,求其最大公约数和最小公倍数.*/ import java.util.*; public class Class6 { public static void main(String[] args) { int a1; int a2; Scanner s = new Scanner(System.in); System.out.println("输入第一个数:"); int a = s.nextInt(); System.out.println("

java经典习题3

/*题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.*/public class Class3 { public static void main(String[] args){ int a; int b; int c; System.out.println("水仙花数为:"); for(int i = 100; i <= 999; i++){ a = i/100; b = (i - a

Java经典23种设计模式之结构型模式(二)

接上篇,本文介绍结构型模式里的组合模式.装饰模式.外观模式. 一.组合模式(Composite) 组合模式:将对象组合成树形结构,表示"部分--整体"的层次结构.最终达到单个对象和组合对象的使用具有一致性.单看这句话貌似有点抽象,其实比较简单. 以李云龙的独立团为例,目的要统计赵嘉宇一战共歼灭敌人多少个.最高的级别是团,一个团有若干个营,一个营有若干个排,一个排有若干个战士.(为了简化问题,排下面就不设行政单位了).很自然的,李云龙给营长开会回去给老子统计.营长回去给各个排长开会,赶紧

(转)Java经典设计模式(3):十一种行为型模式(附实例和详解)

原文出处: 小宝鸽 Java经典设计模式共有21中,分为三大类:创建型模式(5种).结构型模式(7种)和行为型模式(11种). 本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:Java经典设计模式之五大创建型模式(附实例和详解).Java经典设计模式之七大结构型模式(附实例和详解). 行为型模式细分为如下11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 接下来对11种行为型模式逐个进行介

Java经典编程题50道之五十

有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud"中. public class Example50 {    public static void main(String[] args) {        stud();    } public static void stud() {        Scanner ss = new Scanner(System.in); 

(转)Java经典设计模式(2):七大结构型模式(附实例和详解)

原文出处: 小宝鸽 总体来说设计模式分为三大类:创建型模式.结构型模式和行为型模式. 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则.设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章:Java经典设计模式之五大创建模式(附实例和详解). 接下来我们看看结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中适配器模式主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式.其中的对象的适配器