第2章Java 语言基础范文

第2章Java 语言基础范文
第2章Java 语言基础范文

第2章 Java 语言基础

1.标示符和关键字在定义和使用方面有何区别?

【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由Java语言定义的、具有特定含义的英文单词。

使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。

2.Java语言的基本数据类型有哪些?引用数据类型有哪些?

【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)

3.试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别?【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。

4.算术运算、关系运算、逻辑运算和位运算各有哪些运算符?

【答】算术运算:单目运算符有+(正)、—(负)、++(自增)、——(自减),双目运算符有+(加)、—(减)、*(乘)、/(除)、%(取余)

关系运算:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)都是双目运算

逻辑运算:&(与)、|(或)、!(非)、^(异或)、&&(条件与)、||(条件或),其中!是单目运算,其它都是双目运算

位运算:~(非)、&(与)、|(或)、^(异或)、<<(左移位)、>>(右移位)、>>>(无符号移位)

5.程序中为什么需要常量和变量?声明常量或变量时,为什么必须给出其所属的数据类型?【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。

为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。

6.什么是变量的作用域,声明变量时,如何确定变量的作用域?

【答】变量的作用域是指其作用范围。变量声明的位置决定了它的作用域

7.设i是一个整数类型变量,写出下列问题对应的表达式?

(1)判断i为奇数或偶数;

【答】i%2==0 //取值为true时是偶数,否则是奇数

(2)判断i的值是否在0~9之间;

【答】(i>0)&&(i<9)

8.设ch是一个字符变量,写出下列问题对应的表达式

(1)判断ch是一个十进制的数字字符

(2)判断ch是一个十六进制的数字字符

(3)判断ch是一个大写字母

(4)判断ch是一个英文字母,不论大写和小写

(5)如何将一个十进制的数字字符ch转换成对应的整数类型值

(6)如何将一个十六进制的数字字符ch转换成对应的整数类型值

9.说明for、while、和do-while三种循环语句的特点和区别?

While语句的特点:“先判断后执行”,当条件满足时执行循环体

Do-while语句的特点:“先执行后判断”,先执行循环体,在判断条件是否满足

For语句的特点:“先判断后执行”,但for语句将循环控制变量初始值、循环条件和变量的变化规律都以表达式形式写在循环体之前。

10.分别用for,while,do-while三种循环语句计算一个正数的阶乘

(1)for(i=1,i<=10,i++){

int Sum=1;

Sum=Sum*i;}

(2)int i=1;

while(i<=10){

int Sum=1;

Sum=Sum*i;

i++;}

int i=Sum=1;

do{

Sum=Sum*i;

i++;}while(i<=10);

11.输出以下数字的形式;

(1)0 0 0 0

0 1 1 1

0 1 2 2

0 1 2 3

〖解答〗采用二重循环的程序如下。

public class Phalanx

{

public static void main(String args[])

{

int n=4; //阶数

for (int i=0;i

{

for (int j=0;j

System.out.print(" "+((i

System.out.println();

}

}

}

(2)输出下列形式的数字三角阵(当n=4时)。

1

1 2 1

1 2 3 2 1

1 2 3 4 3 2 1

〖解答〗采用二重循环的程序如下。

public class Tower

{

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

{

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

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

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+"="+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

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

{

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

i++;

number++;

}

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

output();

}

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

{

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

for (int i=0;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

new Goldbach(i);

for(int i=7;i

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 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("该数组最大值为:"+max);

System.out.println("该数组最小值为:"+min);

}

}

运行结果如下:

该数组最大值为: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行

for (int j=0;j

System.out.print(" "+table[j]);

System.out.println();

for (int j=i;j>0;j--) //生成下一行数据

table[j]=table[j-1]+table[j]; //通式

}

}

}

18.输出下列方阵:

(1) 输出如下形式的数字方阵(当n=4时):

1 2 6 7

3 5 8 13

4 9 12 14

10 11 15 16

程序如下:

Public class Jmat

{

Public static void main(String args[]){

}

}

(2)输出如下形式的数字方阵(当n=4时):

1 2 5 10

4 3 6 11

9 8 7 12

16 15 14 13

〖解答〗采用二维数组的程序如下。

public class Jmat

{

public static void main(String args[])

{

int n=4; //阶数

int[][] mat = new int[n][n];

int k=1; //k是自然数,递增变化

for (int i=0;i

{

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

mat[j][i] = k++; //k先赋值后自加

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

mat[i][j] = k++;

}

for (int i=0;i

{

for (int j=0;j

System.out.print(" "+mat[i][j]);

System.out.println();

}

}

}

19.找出一个二维数组的鞍点,即该位置的元素在该行上最大,在列上最小。也可能没有暗点。

〖命题〗一个二维数组如果有鞍点,那么它只有一个鞍点。

〖证明〗反证法。

设该二维数组已有一个鞍点,为M[i,j],则有

M[i,*] <= M[i,j] <= M[*,j] (1)

即i行上的所有元素均小于j列上的所有元素。

假设有另一个鞍点M[x,y],由(1)式知

M[i,y] <= M[x,j] (2)

而M[x,y]应在该行上最大,有

M[x,y] >= M[x,j] (3)

M[x,y]应在该列上最小,有

M[x,y] <= M[i,y] (4)

根据(2)式,显然(3)和(4)式是不可能同时成立的。

因而假设有另一个鞍点M[x,y]是不成立的。由此证明。

〖解答〗采用二维数组的程序如下。

public class Dort

{

public static void main(String args[])

{

int[][] mat = {{1,2,3},{4,5,6},{7,8,9}};

for (int i=0;i

{

for (int j=0;j

System.out.print(" "+mat[i][j]);

System.out.println();

}

boolean find = false; //找到鞍点标记

int row=0; //第1行下标

int max=0; //记录当前行最大值的列下标

while (!find && row

{

max=0; //初始设每行第1列值最大

for (int j=1;j

if (mat[row][j]>mat[row][max]) //mat[row][max]为该行最大值

max = j;

boolean yes = true; //再判断mat[row][max]是否在列上最小

int j=0;

while (yes && j

{

if (j!=row && mat[j][max]

yes = false;

j++;

}

if (yes)

find = true;

else

row++;

}

if (find)

System.out.println("The dort: "+mat[row][max]);

else

System.out.println("The dort: null");

}

20.设一个一维数组的元素值为:7,4,8,9,1和5,请输出具有以下内容的方阵:

7 4 8 9 1 5

57 4 8 9 1

1 5 7 4 8 9

9 1 5 7 4 8

8 9 1 5 7 4

4 8 9 1

5 7

【答】程序如下:

public class Shift

{

public static void main(String args[])

{

int table[] = {7,4,8,9,1,5};

System.out.println("左移:");

for (int i=0;i

{

for (int j=0;j

System.out.print(table[(i+j)%table.length]+" ");

System.out.println();

}

System.out.println("\n左移:");

for (int i=0;i

{

int j=i;

do

{

System.out.print(table[j]+" ");

j=(j+1)%table.length;

}while (j!=i);

System.out.println();

}

}

}

21、22、23、24、25、26、27、28、29 方法很多,由学生自己编写练习。

java语言程序设计基础篇第十版课后答案第二章答案

package cn.Testcx; import java.util.Scanner; public class lesson2 { public static void main(String[] args){ @SuppressWarnings("resource") Scanner input =new Scanner(System.in); System.out.print("请输入一个摄氏温度:"); double Celsius =input.nextDouble(); double Fahrenheit =(9.0/5)*Celsius+32; System.out.println("摄氏温度:"+Celsius+"度"+"转换成华氏温度为:"+Fahrenheit+"度"); System.out.print("请输入圆柱的半径和高:"); double radius =input.nextDouble(); int higth = input.nextInt(); double areas =radius*radius*Math.PI; double volume =areas*higth; System.out.println("圆柱体的面积为:"+areas); System.out.println("圆柱体的体积为:"+volume); System.out.print("输入英尺数:"); double feet =input.nextDouble(); double meters =feet*0.305; System.out.println(feet+"英尺转换成米:"+meters); System.out.print("输入一个磅数:"); double pounds =input.nextDouble(); double kilograms =pounds*0.454; System.out.println(pounds+"磅转换成千克为:"+kilograms); System.out.println("输入分钟数:"); long minutes =input.nextInt(); long years =minutes/(24*60*365); long days = (minutes%(24*60*365))/(24*60); System.out.println(minutes+"分钟"+"有"+years+"年和"+days+"天"); long totalCurrentTimeMillis =System.currentTimeMillis(); long totalSeconds =totalCurrentTimeMillis/1000; long currentSeconds =totalSeconds%60; long totalMinutes =totalSeconds/60; long currentMinutes =(totalSeconds%(60*60))/60; long currenthours =(totalMinutes/60)%24; System.out.print("输入时区偏移量:"); byte zoneOffset = input.nextByte(); long currentHour =(currenthours+(zoneOffset*1))%24; System.out.println("当期时区的时间为:"+currentHour+"时"+currentMinutes+"分"+currentSeconds+"秒");

java语言程序设计基础篇第二章程序练习题答案

java语言程序设计基础篇第二章程序练习题答案

2.1(将摄氏温度转化为华氏温度) import java.util.*; public class test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.print("Enter a degree in celsius: "); double Celsius = input.nextDouble(); double Fahrenheit; Fahrenheit = (9.0/5) * Celsius + 32; System.out.println(Celsius + " Celsius is" + Fahrenheit + " Fahrenheit"); } } 2.2(计算圆柱体的体积) import java.util.*; public class test {

public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.print("Enter the radius and length of a cylinder: "); double radius = input.nextDouble(); double length =input.nextDouble(); double area = radius * radius * Math.PI; double volume = area * length; System.out.println("The area is " + area); System.out.println("The volume is " + volume); } } 2.3(将英尺转换为米) import java.util.Scanner; public class test { public static void main(String[] args) {

第2章Java 语言基础范文

第2章 Java 语言基础 1.标示符和关键字在定义和使用方面有何区别? 【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由Java语言定义的、具有特定含义的英文单词。 使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。 2.Java语言的基本数据类型有哪些?引用数据类型有哪些? 【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface) 3.试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别?【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。 4.算术运算、关系运算、逻辑运算和位运算各有哪些运算符? 【答】算术运算:单目运算符有+(正)、—(负)、++(自增)、——(自减),双目运算符有+(加)、—(减)、*(乘)、/(除)、%(取余) 关系运算:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)都是双目运算 逻辑运算:&(与)、|(或)、!(非)、^(异或)、&&(条件与)、||(条件或),其中!是单目运算,其它都是双目运算 位运算:~(非)、&(与)、|(或)、^(异或)、<<(左移位)、>>(右移位)、>>>(无符号移位) 5.程序中为什么需要常量和变量?声明常量或变量时,为什么必须给出其所属的数据类型?【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。 为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。 6.什么是变量的作用域,声明变量时,如何确定变量的作用域? 【答】变量的作用域是指其作用范围。变量声明的位置决定了它的作用域 7.设i是一个整数类型变量,写出下列问题对应的表达式? (1)判断i为奇数或偶数; 【答】i%2==0 //取值为true时是偶数,否则是奇数 (2)判断i的值是否在0~9之间; 【答】(i>0)&&(i<9) 8.设ch是一个字符变量,写出下列问题对应的表达式 (1)判断ch是一个十进制的数字字符

java第二章1

第二章 Java语言基础 一选择题 1. 下列java标识符,错误的是() A、_sys_varl B、$change C、User_name D、1_file 2.下列不属于简单数据类型的是() A、整数类型 B、类 C、符点数类型 D、布尔类型 3.下列属于JA V A关键词的是() A、TRUE B、goto C、float D、NULL 4.下列声明和赋值语句错误的是 A、double w=3.1415; B、String strl=”bye”; C、float z=6.74567 D、boolean truth=true; 5.java中,八进制数以______开头。 A、0x B、0 C、0X D、08 6.自定义类型转换是由按优先关系从低级数据转换为高级数据,优先次序为() A、char-int-long-float-double B、int-long-float-double-char C、long-float-int-double-char D、以上都不对 7.在java中,Integer.MAX_V ALUE表示 A、浮点类型最大值 B、整数类型最大值 C、长整型最大值 D、以上说法都不对 8.JA V A中,数据类型值中不可能出现的符号是() A、d B、f C、e D、/

9.下列表示单引号的是() A、… B、\? C、\\\\? D、…\\ 10. 下列语句片断中,four得值为:() int three=3; char one=‘1’ char four=(char)(three+one); A、3 B、1 C、31 D、4 11. 下列不属于整型变量的类型是 A、byte B、short C、float D、long 12. int类型整型变量在内存中的位数为 A、8 B、16 C、32 D、64 13. 下列数据类型转换,必须进行强制类型转换的是 A、byte→int B、short→long C、float→double D、int→char 14. java中,用()关键字定义常量 A、final B、#define C、float D、const 15. 关于变量的作用范围,下列说法错误的是 A、异常处理参数作用域为整个类 B、局部变量作用于声明该变量的方法代码段 C、类变量作用于声明该变量的类 D、方法参数作用于传递到方法内代码段 16. 下列属于条件运算符的是 A、+ B、?: C、&& D、>> 17. 下列程序test类中的变量c的最后结果为

第二章 Java编程基础(上)作业

第二章Java编程基础(上)作业 1、现有2个byte类型的变量bb=126、bb2=5,当执行bbl=(byte)(bb+bb2);语句之后,bb 的值应该是( D )。 A、-128 B、131 C、-125 bb1 D、语句在编泽中出错 2、下列单精度浮点数fValue的赋值语句中,不正确的一个是( A )。 A、fValue=(double)-23.234f; B、fValue=(char)-12.34f; C、fValue=(char)-56.78d; D、fValue=(int)23.234f; 3、下列标识符中,正确的是( B )。 A、1_Back B、$_Money C、$-money D、2-Foward 4、下列标识符中,合法的一个是( D )。 A、$#@!$ B、$--$ C、2$$2 D、$22$ 5、设有类型定义short i=32;long j=64;下面赋值语句中不正确的一个是( B )。 A、j=i; B、i=j; C、i=(short)j; D、j=(long)i; 6、现有1个char类型的变量cl=66和1个整型变量i2=2;与执行c1=cl+(char)i2;语句之 后,cl的值应该是( A )。 A、‘d’ B、’D’ C、68 D、语句在翻译时出错 7、下列Java语句中,不正确的一个是( D )。 A、Double dValue=(float)1233.213f; B、double dValue=(float)1.213E2f; C、char ch=(char)-1; D、char ch=66: 8、下列哪一个语句是合法的?( D ) A、byte=128; B、Boolean=true: C、long l=0x23EFL; D、double=0.1453d: 9、以下的变量定义语句,合法的是( C )。 A、float_*5=123.456F; B、byte $_bl=156782; C、int_long_=324233L; D、double a=Double.MAX_ V ALUE: 10、设有定义int a=12;则执行以下语句后,a的值为( A )。 a*=12; A、144 B、12 C、24 D、0 11、算术表达式1+2/3—4*5B、的值为9( ) A、1 B、-19 C、-5 D、0 12、下列语句序列执行后,x的值是( B )。 public class ex3{ public static void main(String[ ]args){ int a=2; int b=3; int x=4; x=++a*x; System.out.println(x);

相关文档
最新文档