自考JAVA语言程序设计课后习题答案和源代码(第二章).doc_第1页
自考JAVA语言程序设计课后习题答案和源代码(第二章).doc_第2页
自考JAVA语言程序设计课后习题答案和源代码(第二章).doc_第3页
自考JAVA语言程序设计课后习题答案和源代码(第二章).doc_第4页
自考JAVA语言程序设计课后习题答案和源代码(第二章).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章2.1 Java的字符能参加算术运算吗?可以。(1)字符与整型数据运算,结果为整型数据,只能附给整型变量,如果附给字符型变量会损失精度,需要强制类型装换; (2)字符与字符运算,结果为字符型数据,可以直接附给字符型或整型变量。2.2 占字节多的变量能直接赋值给占字节少的变量么? 答:不能直接赋值,需要强制类型转换。2.3 试用Java语言表达式描述以下数学计算式或逻辑条件:1)解:V = (4.0/3)*Math.PI*Math.pow(r,3);2)解:R = 1.0 / (1.0/R1+1.0/R2);3)解:y = Math.pow(x,5) + Math.pow(x,3) + 6;4)解:F = 1.0 * M1 * M2 / (R * R);5)解:Math.sin(x) / a * x + Math.abs( Math.cos( * x / 2) );6)0 a 0 & a 10 7) 条件 x=1 与 y=2 有且只有一个成立. 解:( x = 1 & y != 2) | (x != 1 & y = 2) 2.4 设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,变量a、b和c的值。1) 解:a=5 ; b=16;2);解:a=5 ; c=102.6 若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000之内的所有完全数。分析:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。例如,6=1+2328=124714496=1+2+4+816+31+62124+2488128=124+81632+64127+254508+10162032+4064程序运行结果:源代码文件:Work2_6.javaimport javax.swing.JOptionPane;/* * 求1000之内的所有完全数 * 一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。 * 例如28=1+2+4+7+14.(28的因子是1,2,4,7,14). * author 黎明你好 */public class Work2_6private int maxNumber = 1000; / 保存正整数private String resultString; / 最后结果字符串public Work2_6()resultString = maxNumber + 以内,完全数有:n;for (int i = 1; i = maxNumber; i+)if (isPerfectNumber(i)resultString += i + ,;showResult(resultString);/* * 判断是否是完全数 * param number - 需要判断的正整数 * return - 是完全数返回true,否则返回false */public boolean isPerfectNumber(int number)int sum = 0;/ 因子的和String str = new String();for (int i = 1; i number; i+)if (number % i = 0)sum += i;str += i + +;if (sum = number)/ 如果因子之和,等于本身,则是完数str = str.substring(0, str.length() - 1); / 去掉字符串最后一个多余的“+”;System.out.println(number + 的因子有: + str);return true;elsereturn false;/* * 弹出对话框,显示结果 * param str - 需要显示的字符串 */public void showResult(String str)JOptionPane.showMessageDialog(null, str, 输出结果,JOptionPane.INFORMATION_MESSAGE);public static void main(String argsp)new Work2_6();2.7 编写输入正实数x,求平方不超过x的最大整数n,并输出。程序运行结果:第一种命令行方式输入,源文件:Work2_7_1.javaimport java.util.Scanner;/* * 编写输入正实数x,求平方不超过x的最大整数n,并输出。 * 命令行方式,输入正实数,输出结果 * author 黎明你好 */ public class Work2_7_1public static void main(String args)Scanner consoleScanner = new Scanner(System.in);System.out.print(请输入正实数X:);String str = consoleScanner.next();int number = -1; trynumber = Integer.parseInt(str);catch( NumberFormatException e ) System.out.println(输入非法字符,程序结束!);return;if (number 1)System.out.println(输入的数不是正实数,程序结束!);elseint n = (int) (Math.sqrt(number);System.out.println(平方不超过+number+的最大整数,n=+n+;);第二种窗口方式输入,源文件:Work2_7_2.java运行结果如下图:/* * 编写输入正实数x,求平方不超过x的最大整数n,并输出。 * 弹出窗口方式 * author 黎明你好 */ import javax.swing.JOptionPane;public class Work2_7_2private int number;public Work2_7_2()number = this.getIntegerNumber(请输入一个正实数, 1);if (number 1)return; / 非法,程序结束int n = (int) (Math.sqrt(number);showResult(平方不超过 + number + 的最大整数nn = + n + ;);/* * 通过图形界面,得到符合规则的正整数的方法 * param message - 在弹出的对话框中,显示提示信息message * param min - 要求此数必须大于等于min */public int getIntegerNumber(String message, int min)String str = JOptionPane.showInputDialog(null, 请输入一个正整数, 提示信息,JOptionPane.INFORMATION_MESSAGE);int number = -1;trynumber = Integer.parseInt(str); / 得到输入的正整数catch( Exception e )JOptionPane.showMessageDialog(null, 输入非数字字符n程序结束, 错误警告,JOptionPane.ERROR_MESSAGE);return -1; / 输入的不是数字字符,程序结束if (number min)JOptionPane.showMessageDialog(null, 输入的数不符合规则,不是正整数n程序结束,错误警告, JOptionPane.ERROR_MESSAGE);return -1; / 输入的数不是大于2的正整数时候,程序结束elsereturn number;/* * 弹出对话框,显示结果 * param str - 需要显示的字符串 */public void showResult(String str)JOptionPane.showMessageDialog(null, str, 输出结果,JOptionPane.INFORMATION_MESSAGE);public static void main(String args)new Work2_7_2();2.8 输入正整数n,输出由n行n列星号字符组成的三角形图案。程序运行结果:源代码文件:Work2_8.java import java.util.*;/* * 输入正整数n,输出由n行n列星号字符组成的三角形图案。 * author 黎明你好 */ public class Work2_8public static void main(String args)Scanner consoleScanner = new Scanner(System.in);System.out.print(请输入正整数n:);String str = consoleScanner.next();int n = -1;tryn = Integer.parseInt(str);catch( NumberFormatException e )System.out.println(输入非法字符,程序结束!);return;if (n 1)System.out.println(输入的数不是正实数,程序结束!);elsefor(int i=0;in;i+)for(int j=0;jn-i-1;j+)System.out.print( );for(int k=0;ki+1;k+)System.out.print(*);System.out.println();2.9 设有整型变量x和y的值分别为5和110。试指出执行了以下循环语句后,变量x和y的值分别试多少?1)while(x=1);解:x=18; y=0; 2.10 水仙花数是一个n(=3)位数字的数,它等于每个数字的n次幂之和。例如153是一个水仙花数,。求小于999的所有水仙花数。程序运行结果:源代码文件:Work2_10.javaimport javax.swing.JOptionPane;/* * 求小于999的所有水仙花数 * author 黎明你好 */ public class Work2_10private String resultString = new String();/ 用来存结果的字符串private int n = 999;public Work2_10()for (int i = 100; i 0)/ 通过循环得到m每个位上的数,存到数组中aamount = m % 10;m = m / 10;amount+;int sum = 0;for (int j = 0; j amount; j+)/ 累加每位上的数的位数次方sum += Math.pow(aj, amount);if (number = sum)/ 如果累加的和等于这个数本身,则他是水仙花数,返回真return true;elsereturn false;public static void main(String args)new Work2_10();2.11 编程序解百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡。求鸡翁、鸡母、和鸡雏个几何?程序运行结果:源代码文件:Work2_11.java/* * 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。 * 百钱买百鸡。求鸡翁、鸡母、和鸡雏个几何。* author 黎明你好 */public class Work2_11public static void main(String args)for (int i = 0; i = 100; i+)for (int j = 0; j = 100; j+) for (int k = 0; k = 100; k += 3) /鸡雏的个数必须使3的倍数if (5*i + 3 * j + k / 3) = 100) & (i + j + k = 100)System.out.println(鸡翁: + i + ; 鸡母: + j + ; 鸡雏:+ k);2.12 编写程序,按下面的公式计算自然对数底e的值:e=1+1/1!+1/2!+1/3!+1/4!+.源代码文件:Work2_12.java/* * 按公式计算:e=1+1/1!+1/2!+1/3!+1/4!+. * author 黎明你好 */public class Work2_12public static void main(String args)int n = 1000; / 计算精度double e = 1.0;for (int i = 1; i = n; i+)e = e + 1.0 / Work2_12.factorial(i);System.out.println(e = + e);/* * 计算阶乘的静态方法 * param - 需要计算阶乘的数 * return - 最后结果 */static double factorial(int a)double f = 1.0;for (int j = 1; j = a; j+)f = f * j;return f;2.13 编写程序,用如下公式计算圆周率PI的近似值:PI4-4/3+4/5-4/7+4/9-4/11.程序运行结果:源代码文件:Work2_13.java/* * 圆周率计算 * author 黎明你好 */public class Work2_13public static void main(String args)int num = 1000000; / 控制计算的项数,越高,越准确System.out.println(用公式计算圆周率,n计算 + num + 项后圆周率的近似值为+ Work2_13.getPai(num);System.out.println(3.14是第 + Work2_13.getIndex(3.14) + 项,tt值为:+ Work2_13.getPai(Work2_13.getIndex(3.14);System.out.println(3.141是第 + Work2_13.getIndex(3.141) + 项,t值为:+ Work2_13.getPai(Work2_13.getIndex(3.141);System.out.println(3.1415是第 + Work2_13.getIndex(3.1415) + 项,t值为:+ Work2_13.getPai(Work2_13.getIndex(3.1415);System.out.println(3.14159是第 + Work2_13.getIndex(3.14159) + 项,t值为:+ Work2_13.getPai(Work2_13.getIndex(3.14159);/* * 根据给出的数值,得到需要计算多少项才能得到这个数值 * * param p - 数值 * return - 项数 */public static double getIndex(double p)int r = 1, num = 1000000; / 控制计算的项数,越高,越准确double i = 1.0, pai = 0.0, t = 1.0;while (r = p & pai = (p + 0.000001)break;return r;/* * 根据给出的数,按公式进行计算圆周率 * param num - 公式项数 * return 返回按公式计算出的圆周率 */public static double getPai(double num)int r = 1;double i = 1.0, pai = 0.0, t = 1.0;while (r =1的整数if (number 0) / 把整数的各个位上的数存到数组里ai = test % 10;test = test / 10;i+;/ 累计整数位数for (int j = 0; j i; j+)if (aj != ai - j - 1)/ 有对应不相等的,肯定不是,直接跳出并附给b为falsereturn false;return true;/ 如果一直相等,则if里边的语句不能被执行b的值是true/* * 通过图形界面,得到符合规则的正整数的方法 * param message - 在弹出的对话框中,显示提示信息message * param min - 要求此数必须大于等于min * return 返回符合规则的整数 */public int getIntegerNumber(String message, int min)String str = JOptionPane.showInputDialog(null, message, 提示信息,JOptionPane.INFORMATION_MESSAGE);int number = -1;trynumber = Integer.parseInt(str); / 得到输入的正整数catch( Exception e )JOptionPane.showMessageDialog(null, 输入非数字字符n程序结束, 错误警告,JOptionPane.ERROR_MESSAGE);return -1; / 输入的不是数字字符,程序结束if (number min)JOptionPane.showMessageD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论