77范文网 - 专业文章范例文档资料分享平台

Java面向对象程序设计 教程课后答案(2)

来源:网络收集 时间:2021-09-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

{ public static void main(String args[])

{ int n=4; //行数

for (int i=1;i<=n;i++)

{ for (int j=1;j<=n-i;j++)

System.out.print(" ");

for (int j=1;j<=i;j++)

System.out.print(" "+j);

for (int j=i-1;j>0;j--)

System.out.print(" "+j);

System.out.println(); }}}

12.下列程序希望用for语句求出1~n累加和并显示,请问程序有错误吗?错在哪里?输出

结果i和s的值分别是多少?

int i=1,n=10,s=0;

for(i=1,i<=n,i++);

s+=i;

System.out.pointln(“Sum=1+ +”+n+”=”+s);

有错误,正确的如下

int i=1,n=10,s=0;

for(i=1,i<=n,i++)

s+=i;

System.out.pointln(“Sum=1+ +”+n+”=”+s); //前导空格

13.编程验证哥德巴赫猜想。哥德巴赫猜想:

(1)任何大于2的偶数都可以表示为2个素数之和,如16=3+13,16=5+11

(2)任何大于5的奇数都可以表示为3个素数之和,如11=2+2+7,11=3+3+5

〖解答〗程序如下。

public class Goldbach

{ static final int MAX=30; //数据范围

static int[] prime=null; //存放素数的一维数组

static int number; //素数个数,即数组的实际元素个数 public Goldbach(int n) //输出n的哥德巴赫算式

{ if (prime==null)

init();

if (n%2==0) //偶数

{ int i=0;

while (i<number && prime[i]<=n/2)

{ if (isPrime(n-prime[i]))

System.out.print(n+"="+prime[i]+"+"+(n-prime[i])+" ");

i++; } }

else //奇数

{ int i=0;

while (i<number && prime[i]<=n/3)

{ int j=i; //如果j=0,则会出现重复的算式

while (j<number && prime[j]<=n/3)

{if (isPrime(n-prime[i]-prime[j]))

System.out.print(n+"="+prime[i]+"+"+prime[j]+"+"

+(n-prime[i]-prime[j])+" ");

j++;

} i++; } }

System.out.println();}

public static void init() //初始化数组,筛选法求素数

{ prime = new int[30];

prime[0]=2; //已知的最小素数

number=1; //素数个数

int i=1; //下一个素数应存放的数组下标位置 int k=3; //从最小奇数开始测试,所有偶数不需测试 do

{int j=0;

while ((j<number) && (k % prime[j]!=0)) //用已知素数prime[j]测试k j++;

if (j==number) //k是素数

{ prime[i]=k; //将k添加到数组prime中 i++;

number++; }

k+=2; //测试下一个奇数是否是素数 } while(k<MAX);

output();}

public static void output() //输出素数

{ System.out.println("All primes in 2~"+MAX+" are: ");

for (int i=0;i<number;i++)

{ System.out.print(" "+prime[i]);

if ((i+1)%10==0)

System.out.println(); //每行写10个数

}

System.out.println("\nnumber="+number);

}

public static boolean isPrime(int k) //判断k是否为素数,即在prime中查找k值 { boolean yes=false;

int i=0;

while (!yes && i<=number && prime[i]<=k)

if (prime[i]==k)

yes=true;

else i++;

return yes;

}

public static void main(String args[])

{ for(int i=4;i<Goldbach.MAX;i+=2)

new Goldbach(i);

for(int i=7;i<Goldbach.MAX;i+=2)

new Goldbach(i);

} }

程序运行结果如下:

All primes in 2~30 are:

2 3 5 7 11 13 17 19 23 29

number=10

偶数

4=2+2

6=3+3

8=3+5

10=3+7 10=5+5

12=5+7

14=3+11 14=7+7

16=3+13 16=5+11

18=5+13 18=7+11

20=3+17 20=7+13

22=3+19 22=5+17 22=11+11

24=5+19 24=7+17 24=11+13

26=3+23 26=7+19 26=13+13

28=5+23 28=11+17

奇数

7=2+2+3

9=2+2+5 9=3+3+3

11=2+2+7 11=3+3+5

13=3+3+7

15=2+2+11 15=3+5+7 15=5+5+5

17=2+2+13 17=3+3+11 17=5+5+7

19=3+3+13 19=3+5+11

21=2+2+17 21=3+5+13 21=3+7+11 21=5+5+11 21=7+7+7

23=2+2+19 23=3+3+17

25=3+3+19 25=3+5+17

27=2+2+23 27=3+5+19

29=3+3+23 29=3+7+19

不能有重复表达式,例如 23=3+7+13 25=5+7+13 27=3+7+17 29=5+5+19 23=5+5+13 23=5+7+11 25=7+7+11 27=5+5+17 27=7+7+13 29=5+7+17

19=3+3+13 19=3+5+11 19=5+3+11

21=2+2+17 21=3+5+13 21=3+7+11 21=5+3+13 21=5+5+11 21=7+3+11 21=7+7+7

14.Java的数组比C++的数组有哪些优越之处?

【答】Java语言不支持C++的指针类型,对数组的操作只能按照数组方式,不能使用指针。Java的数组都是动态数组,并且是引用数据类型,提高了安全性和简单性。另外,Java语言具有资源回收机制,能够自动收回不再使用的资源,一般情况下程序不需要归还数组所占的内存空间。

15.作为引用数据类型,数组变量与基本数据类型的变量使用时有哪些区别?

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说医药卫生Java面向对象程序设计 教程课后答案(2)在线全文阅读。

Java面向对象程序设计 教程课后答案(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/yiyao/1250259.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: