浙江大学Java语言程序设计实验答案全集.docx

上传人:b****5 文档编号:4359698 上传时间:2022-11-30 格式:DOCX 页数:32 大小:24.07KB
下载 相关 举报
浙江大学Java语言程序设计实验答案全集.docx_第1页
第1页 / 共32页
浙江大学Java语言程序设计实验答案全集.docx_第2页
第2页 / 共32页
浙江大学Java语言程序设计实验答案全集.docx_第3页
第3页 / 共32页
浙江大学Java语言程序设计实验答案全集.docx_第4页
第4页 / 共32页
浙江大学Java语言程序设计实验答案全集.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

浙江大学Java语言程序设计实验答案全集.docx

《浙江大学Java语言程序设计实验答案全集.docx》由会员分享,可在线阅读,更多相关《浙江大学Java语言程序设计实验答案全集.docx(32页珍藏版)》请在冰豆网上搜索。

浙江大学Java语言程序设计实验答案全集.docx

浙江大学Java语言程序设计实验答案全集

Java答案全集实验汇总。

实验2数据类型和变量的使用

一、程序填空,在屏幕上显示一个短句“ProgramminginJavaisfun!

import.*;

publicclassTest10001{

publicstaticvoidmain(Stringargs[]){

/*------------------------*/

"ProgramminginJavaisfun!

");

}

}

二、程序填空,在屏幕上显示如下网格。

+---+---+

|||

|||

+---+---+

import.*;

publicclassTest10002{

publicstaticvoidmain(Stringargs[]){

/*------------------------*/

"+---+---+");

"|||");

"|||");

"+---+---+");

}

}

三、编写程序,在屏幕上显示如下图案。

(要求:

第1行行首无空格,每行行尾无空格)

****

***

**

*

publicclassTest10003{

publicstaticvoidmain(Stringargs[]){

/*------------------------*/

"****");

"***");

"**");

"*");

}

}

 

实验3运算符和表达式的使用

1、

运行结果:

m=2k=1

x=y=z=

ch1=-Ach2=A

ch1=-Ach2=a

Hello,WelcometocoreJava!

思考题:

(1)字符'A'的Unicode码比字符'a'的Unicode码小32。

(2)假设字符型变量ch中保存一个大写字母,执行ch+=('a'-'A');后,ch中是相应的小写字母。

例:

若ch='B',执行后ch='b'。

2、

运行结果:

m=3n=2.m大于n吗?

true

m=2n=2.m大于n吗?

false

str1=Hello;str2=Hello!

s1和s2相等吗?

false

思考题:

(1)s2比s1多一个字符“!

”,所以不相同。

(2)s2比s1多一个字符,所以s2比s1大。

3、

运行结果:

逻辑变量b1=true、b2=false

b1^b2(异或运算)的结果是:

true

b1^!

b2(b2取反后与b1异或运算)的结果是:

false

n=31,m=15;m与n的位与运算结果是:

15

m、n的位与后左移2位的结果:

60

思考题:

(1)若给b1赋值2,则程序出错。

因为类型不匹配:

不能从int转换为boolean

(2)n是十六进制数,化为二进制为00011111;

m是八进制数,化为二进制为00001111;

所以n&m为00001111(二进制),就是十进制数15。

(3)120

(4)左移运算就是乘法运算,左移n位就相当于乘以2^n

4、

运行结果:

(m+n>k)?

(m++):

(--m+n++)的运算结果:

2

float型变量强制转换为int型的结果是:

3

int型变量运算:

(m+2*n)/k的结果是:

2

(m+2*n)/k的结果赋值给float型变量后x=

思考题:

(1)因为temp=(--m+n++),等价于依次执行以下命令:

--m;

temp=(m+n);

n++;

所以,temp=2,m=0,n=3,k=3

(2)因为是double类型,不能赋给float类型的变量x

在后面加F或f,将其转换成float类型,就可以赋值了

(3)此时m=1,n=3,k=3,所以(m+2*n)/k=7/3=2

(4)x=(m+2*n)/(float)k=7/=

5、

源程序如下:

publicclassBall{

publicstaticvoidmain(String[]args){

floatr=,PI=,V;

V=4f/3f*PI*r*r*r;

"球的半径为"+r);

"球的体积为"+V);

}

}

运行结果:

球的半径为

球的体积为

实验4顺序结构程序的设计

程序填空,不要改变与输入输出有关的语句。

一、求两个数的和与差。

输入整数a和b,计算并输出a、b的和与差。

例:

输入

2-8

输出

Thesumis-6

Thedifferenceis10

import.*;

importclassTest20001{

publicstaticvoidmain(Stringargs[]){

inta,b,sum,diff;

Scannerin=newScanner;

a=();

b=();

/*------------------*/

sum=a+b;

diff=a-b;

"Thesumis"+sum);

"Thedifferenceis"+diff);

}

}

二、求平方根。

输入1个实数x,计算并输出其平方根。

例:

输入

输出

Thesquarerootofis

import.*;

importclassTest20002{

publicstaticvoidmain(Stringargs[]){

doublex,root;

Scannerin=newScanner;

x=();

/*------------------*/

root=(x);

"Thesquarerootof"+x+"is"+root);

}

}

三、华氏温度转换为摄氏温度。

输入华氏温度f,计算并输出相应的摄氏温度c。

c=5/9(f-32).

例:

括号内是说明

输入

(华氏温度)

输出

Thetempratureis

importclassTest20003{

publicstaticvoidmain(String[]args){

Scannerin=newScanner;

doublef,c;

f=();

/*------------------*/

c=9*(f-32);

importclassTest20004{

publicstaticvoidmain(String[]args){

Scannerin=newScanner;

inttime1,time2,hours,mins;

time1=();

time2=();

/*------------------*/

/*计算两个时间之间的小时数和分钟数*/

hours=time2/100-time1/100;

mins=time2%100-time1%100;

/*当计算得到的分钟数为负数时进行如下处理*/

hours=mins>0?

hours:

hours-1;

mins=mins>0?

mins:

mins+60;

"Thetrainjourneytimeis"+hours+"hrs"+mins+"mins.");

}

}

 

五、数字加密。

输入1个四位数,将其加密后输出。

方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。

例:

括号内是说明

输入

1257

输出

Theencryptednumberis4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)

importclassTest20005{

publicstaticvoidmain(String[]args){

Scannerin=newScanner;

intnumber,digit1,digit2,digit3,digit4,newnum;

number=();

/*------------------*/

/*先分离出各位上的数字*/

digit1=number/1000;

digit2=number/100%10;;

publicclassTest20006{

publicstaticvoidmain(String[]args)throwsIOException{

charch;

ch=(char)/*------------------*/

ch+=32;";perimeter="+(int)(perimeter*100+/100.);

"Thesesidesdonotcorrespondtoavalidtriangle");

例:

括号内是说明

输入

2(repeat=2)

553

114

输出

area=;perimeter=

Thesesidesdonotcorrespondtoavalidtriangle

importclassTest30003{

publicstaticvoidmain(String[]args){

intri,repeat;

floata,b,c,area,perimeter,s;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

a=();

b=();

c=();

   /*------------------*/

if(a+b>c&&a+c>b&&b+c>a)";perimeter="+(int)(perimeter*100+/100.);

}

else

"Thesesidesdonotcorrespondtoavalidtriangle");

}

}

}

四、判断数的符号

输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。

例:

括号内是说明

输入

3(repeat=3)

2-80

输出

1(x=2时y=1)

-1(x=-8时y=-1)

0(x=0时y=0)

importclassTest30004{

publicstaticvoidmain(String[]args){

intri,repeat;

intx,y;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

x=();

   /*------------------*/

if(x>0)y=1;

elseif(x==0)y=0;;

publicclassTest30007{

publicstaticvoidmain(String[]args)throwsIOException{

charch;

ch=(char)while(ch!

='?

'){

   /*------------------*/

if('A'<=ch&&ch<='Z')

ch+=32;

elseif('a'<=ch&&ch<='z')

"f("+x+")="+y);

}

}

}

说明:

对正数y保留两位小数的表达式 (int)(y*100+/

或(x)*100)/

九、显示五级记分制成绩对应的百分制区间

输入一个正整数repeat(0

输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。

五级制成绩对应的百分制成绩区间为:

A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalidinput"。

输入输出示例:

括号内是说明

输入

6

ABCDEj(repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)

输出

90-100

80-89

70-79

60-69

0-59

Invalidinput

importclassTest30010{

publicstaticvoidmain(Stringargs[]){

intrepeat,ri;

charch;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

ch=()).charAt(0);/*输入1个字符*/

/*---------*/

switch(ch){

case'A':

"90-100");break;

case'B':

"80-89");break;

case'C':

"70-79");break;

case'D':

"60-69");break;

case'E':

"0-59");break;

default:

"Invalidinput");

}

}

}

实验6循环结构程序的设计

(一)

程序填空,不要改变与输入输出有关的语句。

1.求1+1/2+1/3+……+1/n

输入一个正整数repeat(0

读入1个正整数n(n<=100),计算并输出1+1/2+1/3+……+1/n。

例:

括号内是说明

输入

2(repeat=1)

2

10

输出

 

importclassTest40001{

publicstaticvoidmain(String[]args){

intri,repeat;

inti,n;

floatsum;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

n=();

/*--------------------*/

1.sum=0; .

输入一个正整数repeat(0

输入一个正整数n,输出2/1+3/2+5/3+8/5+...的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。

(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)

例:

括号内是说明

输入

3(repeat=3)

1520

输出

(第1项是

(前5项的和是

(前20项的和是

importclassTest40011{

publicstaticvoidmain(String[]args){

intri,repeat;

inti,n;

floata,b,s,t;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

n=();

/*--------------------*/

a=1;;

publicclassTest40014{

publicstaticvoidmain(String[]args){

Scannerin=newScanner;

intgcd,lcm,m,n,r;

intrepeat,ri;

repeat=();

for(ri=1;ri<=repeat;ri++){

m=();

n=();

if(m<=0||n<=0)

"m<=0orn<=0");

else{

/*---------*/

lcm=m*n;

if(m

r=m%n;

while(r!

=0)

{m=n;n=r;r=m%n;}

gcd=n;

lcm=lcm/gcd;

"theleastcommonmultiple:

"+lcm

+",thegreatestcommondivisor:

"+gcd);

}

}

}

}

2.求1+1/2!

+....+1/n!

输入一个正整数repeat(0

输入1个正整数n,计算s的前n项的和。

s=1+1/2!

+....+1/n!

例:

括号内是说明

输入:

2(repeat=2)

2(n=2)

10(n=10)

输出:

 

importclassTest40021{

publicstaticvoidmain(Stringargs[]){

intri,repeat;

inti,n;

floats,t;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

n=();

/*--------------------*/

s=0;

t=1;

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

t*=i;

1.s+=1/t;..+1/n!

输入一个正整数repeat(0

输入1个正整数n,计算s的前n项的和(保留4位小数)。

s=1+1/2!

+....+1/n!

要求定义并调用函数fact(n)计算n的阶乘。

例:

括号内是说明

输入:

2(repeat=2)

2(n=2)

10(n=10)

输出:

 

publicclassTest50001{

publicstaticvoidmain(String[]args){

intri,repeat;

inti,n;

doubles;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

n=();

/*-----------*/

s=0;

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

s+=fact(i);

}

}

/*---------------*/

staticdoublefact(intn){

inti;

doublef=1;

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

f*=i;

returnf;

}

}

/*方法fact(n)也可以用以下递归算法设计

staticdoublefact(intn){

if(n==1)

return1;

else

returnn*fact(n-1);

}

*/

2.求a+aa+aaa+aa…a

输入一个正整数repeat(0

输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。

要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。

例如,fn(3,2)的返回值是33。

例:

括号内是说明

输入

2(repeat=2)

23(a=2,n=3)

85(a=8,n=5)

输出

246(2+22+222)

98760(8+88+888+8888+88888)

importclassTest50002{

publicstaticvoidmain(Stringargs[]){

intri,repeat;

inti,n,a;

longsn;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

a=();

n=();

/*------------*/

sn=0;

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

sn+=fn(a,i);

}

}

/*------------*/

staticintfn(inta,intn){

ints=0;

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

s=s*10+a;

returns;

}

}

/*方法fn()也可以用以下递归算法设计

staticintfn(inta,intn){

if(n==1)

returna;

else

returnfn(a,n-1)*10+a;

}

*/

3.统计一个整数中数字的个数

输入一个正整数repeat(0

读入1个整数,统计并输出该数中2的个数。

要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。

例如,countdigit(10090,0)的返回值是3。

例:

括号内是说明

输入:

3(repeat=3)

-21902

2

345543

输出:

count=2(-21902中有2个2)

count=1(有1个2)

count=0(345543中没有2)

importclassTest50003{

publicstaticvoidmain(Stringargs[]){

intri,repeat;

intcount;

longn;

Scannerin=newScanner;

repeat=();

for(ri=1;ri<=repeat;ri++){

n=();

/*---------*/

n=(n);

count=countdigit(n,2);

"count="+count);

}

}

/*------------*/

staticintcountdigit(longnumber,intdigit){

....

要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。

例如,fib(7)的返回值是13。

输出语句:

"");

例:

括号内是说明

输入:

3(repeat=3)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1