浙江大学Java语言程序设计实验答案全集.docx
《浙江大学Java语言程序设计实验答案全集.docx》由会员分享,可在线阅读,更多相关《浙江大学Java语言程序设计实验答案全集.docx(108页珍藏版)》请在冰豆网上搜索。
浙江大学Java语言程序设计实验答案全集
Java答案全集实验汇总。
实验2数据类型和变量的使用
一、程序填空,在屏幕上显示一个短句“ProgramminginJavaisfun!
”
importjava.io.*;
publicclassTest10001{
publicstaticvoidmain(Stringargs[]){
/*------------------------*/
}
}
二、程序填空,在屏幕上显示如下网格。
+---+---+
|||
|||
+---+---+
importjava.io.*;
publicclassTest10002{
publicstaticvoidmain(Stringargs[]){
/*------------------------*/
}
}
三、编写程序,在屏幕上显示如下图案。
(要求:
第1行行首无空格,每行行尾无空格)
****
***
**
*
publicclassTest10003{
publicstaticvoidmain(Stringargs[]){
/*------------------------*/
}
}
实验3运算符和表达式的使用
1、
运行结果:
m=2k=1
x=1.0y=2.0z=-3.0
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=2.0
思考题:
(1)因为temp=(--m+n++),等价于依次执行以下命令:
--m;
temp=(m+n);
n++;
所以,temp=2,m=0,n=3,k=3
(2)因为3.14是double类型,不能赋给float类型的变量x
在3.14后面加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/3.0=2.3333333
5、
源程序如下:
publicclassBall{
publicstaticvoidmain(String[]args){
floatr=6.5f,PI=3.14f,V;
V=4f/3f*PI*r*r*r;
}
}
运行结果:
球的半径为6.5
球的体积为1149.7634
实验4顺序结构程序的设计
程序填空,不要改变与输入输出有关的语句。
一、求两个数的和与差。
输入整数a和b,计算并输出a、b的和与差。
例:
输入
2-8
输出
Thesumis-6
Thedifferenceis10
importjava.io.*;
publicclassTest20001{
publicstaticvoidmain(Stringargs[]){
inta,b,sum,diff;
Scannerin=newScanner(System.in);
a=in.nextInt();
b=in.nextInt();
/*------------------*/
sum=a+b;
diff=a-b;
}
}
二、求平方根。
输入1个实数x,计算并输出其平方根。
例:
输入
1.21
输出
Thesquarerootof1.21is1.1
importjava.io.*;
publicclassTest20002{
publicstaticvoidmain(Stringargs[]){
doublex,root;
Scannerin=newScanner(System.in);
x=in.nextDouble();
/*------------------*/
root=Math.sqrt(x);
}
}
三、华氏温度转换为摄氏温度。
输入华氏温度f,计算并输出相应的摄氏温度c。
c=5/9(f-32).
例:
括号内是说明
输入
17.2(华氏温度)
输出
publicclassTest20003{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
doublef,c;
f=in.nextDouble();
/*------------------*/
c=5.0/9*(f-32);//注意:
5/9结果是0
}
}
四、计算旅途时间。
输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。
有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。
例:
括号内是说明
输入
7121411(出发时间是7:
12,到达时间是14:
11)
输出
Thetrainjourneytimeis6hrs59mins.
publicclassTest20004{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
inttime1,time2,hours,mins;
time1=in.nextInt();
time2=in.nextInt();
/*------------------*/
/*计算两个时间之间的小时数和分钟数*/
hours=time2/100-time1/100;
mins=time2%100-time1%100;
/*当计算得到的分钟数为负数时进行如下处理*/
hours=mins>0?
hours:
hours-1;
mins=mins>0?
mins:
mins+60;
}
}
五、数字加密。
输入1个四位数,将其加密后输出。
方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例:
括号内是说明
输入
1257
输出
Theencryptednumberis4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
publicclassTest20005{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
intnumber,digit1,digit2,digit3,digit4,newnum;
number=in.nextInt();
/*------------------*/
/*先分离出各位上的数字*/
digit1=number/1000;
digit2=number/100%10;//或digit2=(number-digit1*1000)/100;
digit3=number/10%10;//或digit3=(number-digit1*1000-digit2*100)/10;
digit4=number%10;
/*再调整各位上的数字*/
digit1=(digit1+9)%10;
digit2=(digit2+9)%10;
digit3=(digit3+9)%10;
digit4=(digit4+9)%10;
/*最后组成加密后的新数*/
newnum=digit3*1000+digit4*100+digit1*10+digit2;
}
}
六、大写字母转换成小写字母。
输入一个大写英文字母,输出相应的小写字母。
例:
输入
G
输出
g
importjava.io.*;
publicclassTest20006{
publicstaticvoidmain(String[]args)throwsIOException{
charch;
/*------------------*/
ch+=32;//或 ch=(char)(ch+32);
}
}
七、计算三门课程的平均成绩。
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
本题无输入。
输出示例:
math=87,eng=72,comp=93
average=84
publicclassTest20007{
publicstaticvoidmain(String[]args){
intmath,eng,comp,average;
/**********/
math=87;
eng=72;
comp=93;
average=(math+eng+comp)/3;
}
}
八、计算存款利息。
输入存款金额money、存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。
interest=money(1+rate)^year-money
输入输出示例:
括号内为说明
输入
100030.025(money=1000,year=3,rate=0.025)
输出
interest=76.89
publicclassTest20008{
publicstaticvoidmain(String[]args){
intmoney,year;
doubleinterest,rate;
Scannerin=newScanner(System.in);
/*使用in.nextDouble()和in.nextInt()输入double和int型数据*/
/**********/
money=in.nextInt();
year=in.nextInt();
rate=in.nextDouble();
interest=money*Math.pow((1+rate),year)-money;
//注意:
指数运算没有运算符,应使用数学类的方法pow
(int)(interest*100+0.5)/100.0);//正数保留两位小数
}
}
九、计算两个数的和、差、积、商与余数。
输入2个整数num1和num2,计算并输出它们的和、差、积、商与余数。
输入输出示例:
括号内是说明
输入
53(num1=5,num2=3)
输出
5+3=8
5-3=2
5*3=15
5/3=1
5%3=2
publicclassTest20010{
publicstaticvoidmain(Stringargs[]){
intnum1,num2;
Scannerin=newScanner(System.in);
num1=in.nextInt();
num2=in.nextInt();
/*------------------------*/
}
}
十、计算一个3位数的各位数字。
输入一个3位数n,分别求出n的个位数字(c)、十位数字(b)和百位数字(a)的值。
输入输出示例:
输入:
152
输出:
number152:
digit1=2,digit2=5,digit3=1
publicclassTest20011{
publicstaticvoidmain(Stringargs[]){
inta,b,c,n;
Scannerin=newScanner(System.in);
n=in.nextInt();
/*------------------------*/
c=n%10;
b=(n/10)%10;
a=(n/100)%10;
}
}
十一、计算x的平方。
输入x,计算x的平方y。
并分别以"y=x*x"和"x*x=y"的形式输出x和y的值。
输入输出示例:
输入:
3
输出:
(输出中不能出现空格)
9=3*3
3*3=9
publicclassTest20012{
publicstaticvoidmain(String[]args){
intx,y;
Scannerin=newScanner(System.in);
x=in.nextInt();
/*--------------*/
y=x*x;
}
}
实验5分支结构程序的设计
程序填空,不要改变与输入输出有关的语句。
一、显示两级成绩
输入一个正整数repeat(0输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。
输出使用及
例:
括号内是说明
输入
2(repeat=2)
6059
输出
Pass
Fail
publicclassTest30001{
publicstaticvoidmain(String[]args){
intri,repeat;
intmark;
Scannerin=newScanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
mark=in.nextInt();
/*------------------*/
if(mark<60)
System.out.println("Fail");
else
System.out.println("Pass");
}
}
}
二、找最小值
输入一个正整数repeat(0输入四个整数,输出其中的最小值。
例:
括号内是说明
输入
3(repeat=3)
126190
10403020
-1-3-4-5
输出
minis1(126190中的最小值是1)
minis10(10403020中的最小值是10)
minis-5(-1-3-4-5中的最小值是-5)
publicclassTest30002{
publicstaticvoidmain(String[]args){
intri,repeat;
inta,b,c,d,min;
Scannerin=newScanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
a=in.nextInt();
b=in.nextInt();
c=in.nextInt();
d=in.nextInt();
?
?
?
/*------------------*/
min=a;
if(min>b)min=b;
if(min>c)min=c;
if(min>d)min=d;
}
}
}
三、求三角形的面积和周长
输入一个正整数repeat(0输入三角形的三条边a,b,c,如果能构成一个三角形,输出面积area和周长perimeter;否则,输出“Thesesidesdonotcorrespondtoavalidtriangle”。
在一个三角形中,任意两边之和大于第三边。
三角形的面积计算公式:
area*area=s(s-a)(s-b)(s-c)
其中:
s=(a+b+c)/2
输出代码:
例:
括号内是说明
输入
2(repeat=2)
553
114
输出
area=7.15;perimeter=13.0
Thesesidesdonotcorrespondtoavalidtriangle
publicclassTest30003{
publicstaticvoidmain(String[]args){
intri,repeat;
floata,b,c,area,perimeter,s;
Scannerin=newScanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
a=in.nextFloat();
b=in.nextFloat();
c=in.nextFloat();
?
?
?
/*------------------*/
if(a+b>c&&a+c>b&&b+c>a)//注意:
复合条件的正确写法
{s=(a+b+c)/2;
area=(float)Math.sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
System.out.println("area="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimeter*100+0.5)/100.);
}
else
System.out.println("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)
publicclassTest30004{
publicstaticvoidmain(String[]args){
intri,repeat;
intx,y;
Scannerin=newScanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
x=in.nextInt();
?
?
?
/*------------------*/
if(x>0)y=1;
elseif(x==0)y=0;//注意:
=是赋值运算符,==才是比较相等的运算符
elsey=-1;
}
}
}
五、计算个人所得税
输入一个正整数repeat(0输入一个职工的月薪salary,输出应交的个人所得税tax。
tax=rate*(salary-850)
当salary<=850时,rate=0%;
当850当1350当2850当5850例:
括号内是说明
输入
5(repeat=5)
1010.87
32098.76
800
4010
2850
输出
tax=8.04
tax=6249.75
tax=0.0
tax=474.0
tax=200.0
publicclassTest30005{
publicstaticvoidmain(String[]args){
intri,repeat;
floatrate,salary,tax;
Scannerin=newScanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
salary=in.nextFloat();
?
?
?
/*------------------*/
if(salary<=850)//注意:
实现分段函数时对条件的简化
rate=0;
elseif(salary<=1350)
rate=0.05f;
elseif(salary<=2850)
rate=0.1f;
elseif(salary<=5850)
rate=0.15f;
else
rate=0.2f;
tax=rate*(salary-850);
}
}
}
六、显示水果的价格
输入一个正整数repeat(0以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。
[1]apples
[2]pears
[3]oranges
[4]grapes
输入水果的编号,输出该水果的单价。
如果输入不正确的编号,显示单价为0。
例:
括号内是说明
输入
1(repeat=1)
3(oranges的编号)