Java编程练习题Demo71-Demo80
目录
Demo71 (MyTriangle类)创建一个名为MyTriangle的类,它包含如下两个方法: 编写一个测试程序,读入三角形三边的值,若输入有效,则计算面积;否则显示输入无效。
Demo72 (计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数:public static int countLetters(String s),编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数。
Demo73 (数学:平方根的近似求法)有几种实现Math类中sqrt方法的技术。其中一个称为巴比伦法。
Demo74 (回文素数)回文素数是指一个数同时为素数和回文数。例如:131是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。
Demo75 (反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。例如:17是一个素数,而71也是一个素数,所以17和71是反素数。编写程序,显示前100个反素数。每行显示10个,并且数字间用空格隔开
Demo76 (梅森素数) 如果一个素数可以写成(2^p)-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。编写程序,找出p≤31的所有梅森素数,然后显示如下的输出结果:
Demo77 (双素数) 双素数是指一对差值为2的素数。例如:3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。
Demo78 (几何问题:五边形的面积) 编写一个方法,使用下面的方法头来返回五边形的面积。编写一个主方法,提示用户输入五边形的边,然后显示它的面积。
Demo79 (几何问题:正多边形的面积) 正多边形是一个n条边的多边形,它的每条边的长度都相等,而且所有角的角度也相等(即多边形既是等边又等角的)。编写一个main方法,提示用户输人边的个数以及正多边形的边长,然后显示它的面积。
Demo80 递归解决斐波那契数列
Demo71 (MyTriangle类)创建一个名为MyTriangle的类,它包含如下两个方法: 编写一个测试程序,读入三角形三边的值,若输入有效,则计算面积;否则显示输入无效。
三角形面积的计算公式在编程练习题Demo16中给出。
s = (边1 + 边2 + 边3 ) / 2
面积 = √(s(s - 边1)(s - 边2)(s - 边3))
package Exer2;import java.util.Scanner;public class Demo71 {/*(MyTriangle类)创建一个名为MyTriangle的类,它包含如下两个方法:编写一个测试程序,读入三角形三边的值,若输入有效,则计算面积;否则显示输入无效。三角形面积的计算公式在编程练习题2.19中给出。s = (边1 + 边2 + 边3 ) / 2面积 = √(s(s - 边1)(s - 边2)(s - 边3))*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入三角形的三边长:");double side1 = scanner.nextInt();double side2 = scanner.nextInt();double side3 = scanner.nextInt();if (isValid(side1, side2, side3)) {double area = area(side1, side2, side3);System.out.println("三角形的面积为:" + area);} else {System.out.println("输入无效!");}}/* Return true if the sum of any two sides is greater than the third side. */public static boolean isValid(double side1, double side2, double side3) {return side1 + side2 > side3 && side1 + side3 > side2 && side2 + side3 > side1;}/* Return the area of the triangle. */public static double area(double side1, double side2, double side3) {double s = (side1 + side2 + side3) / 2;return Math.pow(s * (s - side1) * (s - side2) * (s - side3), 0.5);}
}
结果:
Demo72 (计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数:public static int countLetters(String s),编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数。
package Exer2;import java.util.Scanner;public class Demo72 {/*(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数:public static int countLetters(String s)编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数。*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("请输入一个字符串:");String str = scan.nextLine();System.out.println(str + " 中的字母个数:" + countLetters(str));scan.close();}public static int countLetters(String s) {int count = 0;for (int i = 0; i < s.length(); i++) {if (Character.isLetter(s.charAt(i))) {count++;}}return count;}
}
结果:
Demo73 (数学:平方根的近似求法)有几种实现Math类中sqrt方法的技术。其中一个称为巴比伦法。
它通过使用下面公式的反复计算近似地得到:nextGuess = (lastGuess + n / lastGuess) / 2
当nextGuess和lastGuess几乎相同时,nextGuess 就是平方根的近似值。最初的猜测值可以是任意一个正值(例如1)。这个值就是lastGuess的初始值。如果nextGuess和lastGuess的差小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近似值;否则,nextGuess就成为lastGuess,近似过程继续执行。实现下面的方法,返回n的平方根。
public static double sqrt(long n)
package Exer2;public class Demo73 {public static void main(String[] args) {System.out.println(sqrt(5));}public static double sqrt(long n) {double lastGuess = 1;double nextGuess = (lastGuess + n / lastGuess) / 2;while (true) {if (Math.abs(lastGuess - nextGuess) < 0.0001) {break;} else {lastGuess = nextGuess;nextGuess = (lastGuess + n / lastGuess) / 2;}}return nextGuess;}
}
结果:
Demo74 (回文素数)回文素数是指一个数同时为素数和回文数。例如:131是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。
如下所示:
2 3 5 7 11 101 131 151 181 191
313 353 373 383 727 757 787 797 919 929
package Exer2;public class Demo74 {/*(回文素数)回文素数是指一个数同时为素数和回文数。例如:131是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。如下所示:2 3 5 7 11 101 131 151 181 191313 353 373 383 727 757 787 797 919 929*/public static void main(String[] args) {isPalindromeAndPrimeNum();}public static void isPalindromeAndPrimeNum() {int count = 0;for (int i = 2; i < 1000000; i++) {boolean isFlag = true;for (int j = 2; j <= i / 2; j++) {if (i % j == 0) {isFlag = false;break;}}if (isFlag && reverse(i) == i) {count++;System.out.print(i + " \t ");if (count % 10 == 0) {System.out.println();}}if (count == 100) {break;}}}public static int reverse(int number) {int reverseNum = 0;while (number > 0) {reverseNum *= 10;reverseNum += number % 10;number /= 10;}return reverseNum;}
}
结果:
Demo75 (反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。例如:17是一个素数,而71也是一个素数,所以17和71是反素数。编写程序,显示前100个反素数。每行显示10个,并且数字间用空格隔开
如下所示:
13 17 31 37 71 73 79 97 107113
149 157167179 199 311 337 347 359 389
package Exer2;public class Demo75 {/*(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。例如:17是一个素数,而71也是一个素数,所以17和71是反素数。编写程序,显示前100个反素数。每行显示10个,并且数字间用空格隔开,如下所示:13 17 31 37 71 73 79 97 107 113149 157167179 199 311 337 347 359 389*/public static void main(String[] args) {isEmirp();}private static void isEmirp() {int count = 0;for (int i = 2; i < 10000; i++) {boolean isFlag = true;for (int j = 2; j <= i / 2; j++) {if (i % j == 0) {isFlag = false;break;}}if (isFlag && reverse(i) != i && isPrimeNum(reverse(i))) {count++;System.out.print(i + " \t");if (count % 10 == 0) {System.out.println();}}if (count == 100) {break;}}}public static boolean isPrimeNum(int number) {for (int i = 2; i <= number / 2; i++) {if (number % i == 0) {return false;}}return true;}private static int reverse(int number) {int reverseNum = 0;while (number > 0) {reverseNum = reverseNum * 10 + number % 10;number /= 10;}return reverseNum;}
}
结果:
Demo76 (梅森素数) 如果一个素数可以写成(2^p)-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。编写程序,找出p≤31的所有梅森素数,然后显示如下的输出结果:
package Exer2;public class Demo76 {/*(梅森素数) 如果一个素数可以写成(2^p)-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。\编写程序,找出p≤31的所有梅森素数,然后显示如下的输出结果:*/public static void main(String[] args) {printMersennePrime();}private static void printMersennePrime() {System.out.printf("%s\t\t%s%n","p", "2^p-1");System.out.println("________________");for (int p = 2; p <= 31; p++) {if (isPrimeNum((int)((Math.pow(2, p)) - 1))) {System.out.printf("%s\t\t%s%n",p, (int)((Math.pow(2, p)) - 1));}}}private static boolean isPrimeNum(int number) {for (int i = 2; i < number / 2; i++) {if (number % i == 0) {return false;}}return true;}
}
结果:
Demo77 (双素数) 双素数是指一对差值为2的素数。例如:3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。
显示结果如下所示:
(3, 5)
(5, 7)
......
package Exer2;public class Demo78 {/*(双素数) 双素数是指一对差值为2的素数。例如:3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。*/public static void main(String[] args) {for (int i = 2; i < 1000; i++) {if (isPrimeNum(i) && isPrimeNum(i + 2)) {System.out.printf("(%s, %s)%n", i, i + 2);}}}private static boolean isPrimeNum(int num) {for (int i = 2; i <= num / 2; i++) {if (num % i == 0) {return false;}}return true;}
}
结果:
Demo78 (几何问题:五边形的面积) 编写一个方法,使用下面的方法头来返回五边形的面积。编写一个主方法,提示用户输入五边形的边,然后显示它的面积。
五边形的面积可以使用下面的公式计算:面积 = (5 × s²) / (4 × tan(π / 5))
public static double area(double side)
下面是一个运行示例:
package Exer2;import java.util.Scanner;public class Demo78 {/*(几何问题:五边形的面积) 编写一个方法,使用下面的方法头来返回五边形的面积。编写一个主方法,提示用户输入五边形的边,然后显示它的面积。五边形的面积可以使用下面的公式计算:面积 = (5 × s²) / (4 × tan(π / 5))public static double area(double side)*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入从五边形的边长:");double side = scan.nextDouble();double area = area(side);System.out.println(area);scan.close();}public static double area(double side) {double area;area = (5 * Math.pow(side, 2)) / (4 * Math.tan(Math.PI / 5));return area;}
}
结果:
Demo79 (几何问题:正多边形的面积) 正多边形是一个n条边的多边形,它的每条边的长度都相等,而且所有角的角度也相等(即多边形既是等边又等角的)。编写一个main方法,提示用户输人边的个数以及正多边形的边长,然后显示它的面积。
计算正多边形面积的公式是:面积 = (n × s²) / (4 × tan(π / n))
使用下面的方法头编写方法,返回正多边形的面积:public static double area(int n,double side)
下面是一个运行示例:
package Exer2;import java.util.Scanner;public class Demo79 {/*(几何问题:正多边形的面积) 正多边形是一个n条边的多边形,它的每条边的长度都相等,而且所有角的角度也相等(即多边形既是等边又等角的)。编写一个main方法,提示用户输人边的个数以及正多边形的边长,然后显示它的面积。计算正多边形面积的公式是:面积 = (n × s²) / (4 × tan(π / n))使用下面的方法头编写方法,返回正多边形的面积:public static double area(int n,double side)*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入正多边形边的个数:");int n = scan.nextInt();System.out.println("请输入正多边形的边长:");double side = scan.nextDouble();double area = area(n, side);System.out.println("正多边形的面积为:" + area);scan.close();}public static double area(int n, double side) {return (n * Math.pow(side, 2)) / (4 * Math.tan(Math.PI / n));}
}
结果:
Demo80 递归解决斐波那契数列
package Exer2;import java.util.Scanner;public class Demo80 {/*递归解决斐波那契数列*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入项数:");int n = scan.nextInt();System.out.println(fibonacci(n));scan.close();}private static int fibonacci(int n) {if (n == 0) {return 0;}if (n == 1) {return 1;}return fibonacci(n - 1) + fibonacci(n - 2);}
}
结果:
Java编程练习题Demo71-Demo80相关推荐
- JAVA编程练习题(50题及答案11-20)
[程序11] 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? public class lianxi11 {public static void main(Str ...
- 简单java编程练习题
https://wenku.baidu.com/view/29919119fc4ffe473268ab05.html
- Java编程练习题之冒泡排序
public class Demo04 {public static void main(String[] args) {// 冒泡排序int[] arr = {9, 2, 4, 7, 1};// 外 ...
- java编程练习题_java编程练习题
设计并实现一个员工(Employee)类,其成员变量有:姓名,性别,工龄,基础工资,岗位津贴,效益工资.成员方法有: (1)计算应付工资 (2)计算个人所得税(3500以下免税,超出3500以上部分按 ...
- Java黑皮书课后题第11章:11.3(Account类的子类)在编程练习题9.7中定义了一个Account类来对一个银行账户建模。一个账户有账号、余额、年利率、开户日期等属性,以及存款和取款等方法
续标题:创建支票账户checking account和储蓄账户saving account两个子类.支票账户有一个透支限定额,但储蓄账户不能透支 题目(续) 题目中提到的编程练习题9.7:以下代码直接 ...
- Java黑皮书课后题第10章:*10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal
10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal 题目 首次尝试 代码 运行 关于揪bug 第二次尝试 代码 运行结 ...
- Java黑皮书课后题第10章:***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序。设计一个名为Tax类,该类包含下面的实例数据域
***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序.设计一个名为Tax类,该类包含下面的实例数据域 题目 程序解释 代码 Test8.java Test8_Tax.jav ...
- Java黑皮书课后题第10章:**10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级
**10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级 题目 程序 代码 Test7.java Test7_Account.java 运行示例 题目 程序 Tes ...
- Java黑皮书课后题第8章:*8.15(几何:在一条直线上吗)编程练习题6.39给出了一个方法,用于测试三个点是否在一条直线上。编写下面的方法,检测points数组中所有的点是否都在同一条直线上
*8.15(几何:在一条直线上吗)编程练习题6.39给出了一个方法,用于测试三个点是否在一条直线上.编写下面的方法,检测points数组中所有的点是否都在同一条直线上 题目 题目描述与运行示例 破题 ...
- Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...
最新文章
- GdiPlus[6]: 五种画刷总览
- JavaScript的运行模式
- bps计算机,bps指的是计算机的什么
- 部门选择控件源代码公布
- LeetCode 664. 奇怪的打印机(区间DP)
- AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨
- 使用C# impersonation进行windows帐号的校验
- php simplexmlelement array,php中SimpleXMLElement 对象转换为数组
- Linux之lastb命令
- 关于handler的再次讨论
- Activeperl安装教程MAC苹果电脑
- 如何用java调用python的爬虫程序
- 2017年 外牌转沪牌 攻略 (沪南路车管所)
- 联想 Y7000 安装 扩展 内存条
- latex如何打空格
- 我私藏的那些实用的终端命令行工具
- selenium driver关闭
- 追MM“23式”—— GOF 23种设计模式
- PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建。
- VMware是什么?
热门文章
- Python进阶练习题,新手快码起来
- 电脑无限循环cmd代码 Window系统下死循环
- 基础知识:计算机网络--《趣谈网络协议》读书笔记
- [给创业公司的原生云] ②Spine L1
- win10美化--打造专属我的windows
- 如何批量查询ip地址归属地等信息?
- java怎么控制数据权限_Java权限控制算法
- 服务器内部错误文件接收失败,您的接收电子邮件服务器报告发生内部错误.docx...
- linux锐捷代码_Linux平台锐捷认证客户端联网方法
- 《信号检测与估值理论》Matlab仿真,包括: 高斯-牛顿迭代法对正弦信号参数进行估计