java程序设计实用教程 (第3版) 叶核亚 习题答案 所有答案1—12章 联系客服

发布时间 : 星期一 文章java程序设计实用教程 (第3版) 叶核亚 习题答案 所有答案1—12章更新完毕开始阅读08b9d532b90d6c85ec3ac6a9

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

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

System.out.print(n+\ \ i++; } }

else //奇数

{

int i=0;

while (i

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

while (j

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

System.out.print(n+\ +(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

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

{

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

number++; }

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

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

System.out.println(\ for (int i=0;i

System.out.print(\ \ if ((i+1)==0)

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

}

System.out.println(\ }

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

for(int i=7;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 23=3+7+13 23=5+5+13 23=5+7+11 25=3+3+19 25=3+5+17 25=5+7+13 25=7+7+11

27=2+2+23 27=3+5+19 27=3+7+17 27=5+5+17 27=7+7+13 29=3+3+23 29=3+7+19 29=5+5+19 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.作为引用数据类型,数组变量与基本数据类型的变量使用时有哪些区别?

【答】数组变量与基本数据类型变量不同点在于,存储单元的分配方式不同,两个变量之间的赋值方式也不同。基本数据类型变量获得存储单元的方式是静态的,声明了变量后系统就为变量分配了存储单元,就可以对变量赋值。两个变量之间的赋值是值本身。 数组变量的引用赋值,数组变量保存的是数组的引用,即数组占用的一片连续存储空间的首地址及长度特性。当声明一个数字变量而未申请空间时,变量是未初始化的,没有地址及特性值。只有申请了存储空间,才能以下标表示数组元素。

16.求一组数中的最大值和最小值。 【答】程序如下:

public class Zuizhi { public static void main(String[] args) { // TODO 自动生成方法存根

int array[]=new int[100];

for(int i=1;i<=30;++i)//初始化数组 array[i]=i;

int max=array[1];//保存最大值 int min=array[1];//保存最小值

for(int j=2;j<=30;++j) { max=Math.max(max, array[j]); min=Math.min(min, array[j]); }

System.out.println(\该数组最大值为:\System.out.println(\该数组最小值为:\

} }

运行结果如下: 该数组最大值为:30 该数组最小值为:1

17.采用一维数组输出杨辉三角形。

程序如下:

public class Yanghui1 {

public static void main(String args[]) {

int n=10; //n表示行数 int[] table = new int[n+1];

table[0]=1; //每行第1个数都为1 for (int i=1;i<=n;i++) //控制输出n行