自考JAVA语言程序设计一课后习题答案和源代码第二章Word格式文档下载.docx
- 文档编号:16837208
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:21
- 大小:90.71KB
自考JAVA语言程序设计一课后习题答案和源代码第二章Word格式文档下载.docx
《自考JAVA语言程序设计一课后习题答案和源代码第二章Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自考JAVA语言程序设计一课后习题答案和源代码第二章Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
2.6若一个数恰好等于它的因子之和,则这个数称为“完全数”。
编写程序求1000之内的所有完全数。
分析:
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。
例如,
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
程序运行结果:
源代码文件:
Work2_6.java
importjavax.swing.JOptionPane;
/**
*求1000之内的所有完全数<
BR>
*一个数如果恰好等于除它本身外的因子之和,这个数就称为"
完数"
。
<
*例如28=1+2+4+7+14.(28的因子是1,2,4,7,14).<
*@author黎明你好
*/
publicclassWork2_6
{
privateintmaxNumber=1000;
//保存正整数
privateStringresultString;
//最后结果字符串
publicWork2_6()
{
resultString=maxNumber+"
以内,完全数有:
\n"
;
for(inti=1;
i<
=maxNumber;
i++)
{
if(isPerfectNumber(i))
{
resultString+=i+"
,"
}
}
showResult(resultString);
}
/**
*判断是否是完全数
*@paramnumber-需要判断的正整数
*@return-是完全数返回true,否则返回false
publicbooleanisPerfectNumber(intnumber)
intsum=0;
//因子的和
Stringstr=newString("
"
);
number;
if(number%i==0)
sum+=i;
str+=i+"
+"
if(sum==number)//如果因子之和,等于本身,则是完数
str=str.substring(0,str.length()-1);
//去掉字符串最后一个多余的“+”;
System.out.println(number+"
的因子有:
+str);
returntrue;
else
returnfalse;
*弹出对话框,显示结果
*@paramstr-需要显示的字符串
publicvoidshowResult(Stringstr)
JOptionPane.showMessageDialog(null,str,"
输出结果"
JOptionPane.INFORMATION_MESSAGE);
publicstaticvoidmain(Stringargsp[])
newWork2_6();
}
2.7编写输入正实数x,求平方不超过x的最大整数n,并输出。
第一种命令行方式输入,源文件:
Work2_7_1.java
importjava.util.Scanner;
*编写输入正实数x,求平方不超过x的最大整数n,并输出。
*命令行方式,输入正实数,输出结果<
*/
publicclassWork2_7_1
publicstaticvoidmain(String[]args)
ScannerconsoleScanner=newScanner(System.in);
System.out.print("
请输入正实数X:
Stringstr=consoleScanner.next();
intnumber=-1;
try
number=Integer.parseInt(str);
catch(NumberFormatExceptione)
System.out.println("
输入非法字符,程序结束!
!
return;
if(number<
1)
输入的数不是正实数,程序结束!
intn=(int)(Math.sqrt(number));
平方不超过"
+number+"
的最大整数,n="
+n+"
第二种窗口方式输入,源文件:
Work2_7_2.java
运行结果如下图:
*弹出窗口方式
publicclassWork2_7_2
privateintnumber;
publicWork2_7_2()
number=this.getIntegerNumber("
请输入一个正实数"
1);
//非法,程序结束
intn=(int)(Math.sqrt(number));
showResult("
+number+"
的最大整数\nn="
+n+"
*通过图形界面,得到符合规则的正整数的方法
*@parammessage-在弹出的对话框中,显示提示信息message
*@parammin-要求此数必须大于等于min
publicintgetIntegerNumber(Stringmessage,intmin)
Stringstr=JOptionPane.showInputDialog(null,"
请输入一个正整数"
"
提示信息"
//得到输入的正整数
catch(Exceptione)
JOptionPane.showMessageDialog(null,"
输入非数字字符\n程序结束"
错误警告"
JOptionPane.ERROR_MESSAGE);
return-1;
//输入的不是数字字符,程序结束
min)
输入的数不符合规则,不是正整数\n程序结束"
"
JOptionPane.ERROR_MESSAGE);
//输入的数不是大于2的正整数时候,程序结束
returnnumber;
*@paramstr-需要显示的字符串
newWork2_7_2();
2.8输入正整数n,输出由n行n列星号字符组成的三角形图案。
Work2_8.java
importjava.util.*;
*输入正整数n,输出由n行n列星号字符组成的三角形图案。
publicclassWork2_8
publicstaticvoidmain(Stringargs[])
请输入正整数n:
intn=-1;
n=Integer.parseInt(str);
catch(NumberFormatExceptione)
if(n<
for(inti=0;
i<
n;
i++)
for(intj=0;
j<
n-i-1;
j++)
{
System.out.print("
"
}
for(intk=0;
k<
i+1;
k++)
*"
System.out.println();
2.9设有整型变量x和y的值分别为5和110。
试指出执行了以下循环语句后,变量x和y的值分别试多少?
1)while(x<
=y)x*=2;
解:
x=160;
y=110;
2)do{x=y/x;
y=y-x;
}while(y>
=1);
x=18;
y=0;
2.10水仙花数是一个n(>
=3)位数字的数,它等于每个数字的n次幂之和。
例如153是一个水仙花数,
求小于999的所有水仙花数。
Work2_10.java
*求小于999的所有水仙花数
publicclassWork2_10
privateStringresultString=newString("
//用来存结果的字符串
privateintn=999;
publicWork2_10()
for(inti=100;
n;
if(isNarcissusNumber(i))
resultString+="
+i;
JOptionPane.showMessageDialog(null,n+"
之前的所有水仙花数是:
+resultString,
"
JOptionPane.INFORMATION_MESSAGE);
publicbooleanisNarcissusNumber(intm)//判断是否是水仙花数的方法
intnumber=m;
//把m存起来
inta[]=newint[100];
//用来存n每个位上的数
intamount=0;
//表示n的位数
while(m>
0)//通过循环得到m每个位上的数,存到数组中
a[amount]=m%10;
m=m/10;
amount++;
for(intj=0;
j<
amount;
j++)//累加每位上的数的位数次方
sum+=Math.pow(a[j],amount);
if(number==sum)//如果累加的和等于这个数本身,则他是水仙花数,返回真
newWork2_10();
2.11编程序解百鸡问题:
鸡翁一,值钱五;
鸡母一,值钱三;
鸡雏三,值钱一。
百钱买百鸡。
求鸡翁、鸡母、和鸡雏个几何?
Work2_11.java
*鸡翁一,值钱五;
*百钱买百鸡。
求鸡翁、鸡母、和鸡雏个几何。
*@author黎明你好
publicclassWork2_11
for(inti=0;
=100;
for(intj=0;
j++)
{
for(intk=0;
k<
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
*按公式计算:
publicclassWork2_12
intn=1000;
//计算精度
doublee=1.0;
=n;
e=e+1.0/Work2_12.factorial(i);
System.out.println("
e="
+e);
*计算阶乘的静态方法
*@param-需要计算阶乘的数
*@return-最后结果
staticdoublefactorial(inta)
doublef=1.0;
for(intj=1;
=a;
f=f*j;
returnf;
2.13编写程序,用如下公式计算圆周率PI的近似值:
PI=4-4/3+4/5-4/7+4/9-4/11...
Work2_13.java
*圆周率计算
publicclassWork2_13
intnum=1000000;
//控制计算的项数,越高,越准确
用公式计算圆周率,\n计算"
+num+"
项后圆周率的近似值为"
+Work2_13.getPai(num));
3.14是第"
+Work2_13.getIndex(3.14)+"
项,\t\t值为:
+Work2_13.getPai(Work2_13.getIndex(3.14)));
3.141是第"
+Work2_13.getIndex(3.141)+"
项,\t值为:
+Work2_13.getPai(Work2_13.getIndex(3.141)));
3.1415是第"
+Work2_13.getIndex(3.1415)+"
+Work2_13.getPai(Work2_13.getIndex(3.1415)));
3.14159是第"
+Work2_13.getIndex(3.14159)+"
+Work2_13.getPai(Work2_13.getIndex(3.14159)));
*根据给出的数值,得到需要计算多少项才能得到这个数值
*
*@paramp-数值
*@return-项数
publicstaticdoublegetIndex(doublep)
intr=1,num=1000000;
doublei=1.0,pai=0.0,t=1.0;
while(r<
num)
pai=pai+(4.0/i)*t;
t=-t;
i=i+2;
r++;
if(pai>
=p&
pai<
=(p+0.000001))
break;
returnr;
*根据给出的数,按公式进行计算圆周率
*@paramnum-公式项数
*@return返回按公式计算出的圆周率
publicstaticdoublegetPai(doublenum)
intr=1;
}
returnpai;
}
2.14回文整数是指正读法和反读相同的整数,编写一个程序,输入一个整数,判断他是否为回文整数。
Work2_14.java
*输入整数,判断是否是回文整数
publicclassWork2_14
publicWork2_14()
number=getIntegerNumber("
输入一个正整数n"
//要求是>
=1的整数
0)
if(isPalindrome(number))
showResult("
输入的正整数“"
”是回文数"
”不是回文数"
*判断是否是回文数
*@return是回文数返回真,否则返回假
publicbooleanisPalindrome(intnumber)
inti=0;
inttest=number;
while(test>
0)//把整数的各个位上的数存到数组里
a[i]=test%10;
test=test/10;
i++;
//累计整数位数
i;
if(a[j]!
=a[i-j-1])//有对应不相等的,肯定不是,直接跳出并附给b为false
returnfalse;
returntrue;
//如果一直相等,则if里边的语句不能被执行b的值是true
*通过图形界
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 JAVA 语言程序设计 课后 习题 答案 源代码 第二