浙江大学Java语言程序设计实验答案全集.docx
- 文档编号:25632212
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:36
- 大小:37.15KB
浙江大学Java语言程序设计实验答案全集.docx
《浙江大学Java语言程序设计实验答案全集.docx》由会员分享,可在线阅读,更多相关《浙江大学Java语言程序设计实验答案全集.docx(36页珍藏版)》请在冰豆网上搜索。
浙江大学Java语言程序设计实验答案全集
Revisedasof23November2020
浙江大学Java语言程序设计实验答案全集
Java答案全集实验汇总。
实验2数据类型和变量的使用
一、程序填空,在屏幕上显示一个短句“ProgramminginJavaisfun!
”
import.*;
publicclassTest10001{
publicstaticvoidmain(Stringargs[]){
/*------------------------*/
}
}
二、程序填空,在屏幕上显示如下网格。
+---+---+
|||
|||
+---+---+
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;
}
}
运行结果:
球的半径为
球的体积为
实验4顺序结构程序的设计
程序填空,不要改变与输入输出有关的语句。
一、。
输入整数a和b,计算并输出a、b的和与差。
例:
输入
2-8
输出
Thesumis-6
Thedifferenceis10
import.*;
publicclassTest20001{
publicstaticvoidmain(Stringargs[]){
inta,b,sum,diff;
Scannerin=newScanner;
a=();
b=();
/*------------------*/
sum=a+b;
diff=a-b;
}
}
二、。
输入1个实数x,计算并输出其平方根。
例:
输入
输出
Thesquarerootofis
import.*;
publicclassTest20002{
publicstaticvoidmain(Stringargs[]){
doublex,root;
Scannerin=newScanner;
x=();
/*------------------*/
root=(x);
}
}
三、。
输入华氏温度f,计算并输出相应的摄氏温度c。
c=5/9(f-32).
例:
括号内是说明
输入
(华氏温度)
输出
publicclassTest20003{
publicstaticvoidmain(String[]args){
Scannerin=newScanner;
doublef,c;
f=();
/*------------------*/
c=9*(f-32);
publicclassTest20004{
publicstaticvoidmain(String[]args){
Scannerin=newScanner;
inttime1,time2,hours,mins;
time1=();
time2=();
/*------------------*/
/*计算两个时间之间的小时数和分钟数*/
hours=time2/100-time1/100;
mins=time2%100-time1%100;
/*当计算得到的分钟数为负数时进行如下处理*/
hours=mins>0hours:
hours-1;
mins=mins>0mins:
mins+60;
}
}
五、。
输入1个四位数,将其加密后输出。
方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例:
括号内是说明输入1257输出Theencryptednumberis4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
publicclassTest20005{
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+=32;";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)
publicclassTest30004{
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;
while(ch!
=''){
/*------------------*/
if('A'<=ch&&ch<='Z')
ch+=32;
elseif('a'<=ch&&ch<='z')
}
}
}
说明:
对正数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 publicclassTest30010{ 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. 输入一个正整数repeat(0 读入1个正整数n(n<=100),计算并输出1+1/2+1/3+……+1/n。 例: 括号内是说明 输入 2(repeat=1) 2 10 输出 publicclassTest40001{ 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项的和是 publicclassTest40011{ 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) else{ /*---------*/ lcm=m*n; if(m r=m%n; while(r! =0) {m=n;n=r;r=m%n;} gcd=n; lcm=lcm/gcd; +",thegreatestcommondivisor: "+gcd); } } } } 2. 输入一个正整数repeat(0 输入1个正整数n,计算s的前n项的和。 s=1+1/2! +....+1/n! 例: 括号内是说明 输入: 2(repeat=2) 2(n=2) 10(n=10) 输出: publicclassTest40021{ 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) publicclassTest50002{ 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) publicclassTest50003{ publicstaticvoidmain(Stringargs[]){ intri,repeat; intcount; longn; Scannerin=newScanner; repeat=(); for(ri=1;ri<=repeat;ri++){ n=(); /*---------*/ n=(n); count=countdigit(n,2); } } /*------------*/ staticintcountdigit(longnumber,intdigit){ .... 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 例如,fib(7)的返回值是13。 例: 括号内是说明 输入: 3(repeat=3) 110(m=1,n=10) 20100(m=20,n=100) 10006000(m=1000,n=6000) 输出: 112358(1到10之间的Fibonacci数) 21345589(20到100之间的Fibonacci数) 159725844181(1000到6000之间的Fibonacci数) publicclassTest50006{ publicstaticvoidmain(Stringargs[]){ intri,repeat; inti,m,n; longf; Scannerin=newScanner; repeat=(); for(ri=1;ri<=repeat;ri++){ m=(); n=(); /*---------*/ i=1; f=1; while(f<=n){ i++; f=fib(i); } } } /*------------*/ staticlongfib(intn){ inti; longa=1,b=1,f=1; for(i=3;i<=n;i++){副对角线为从矩阵的右上角至左下角的连线) 例: 括号内是说明 输入: 1(repeat=1) 4(n=4) 2341 5611 7181 1111 sum=35(2+3+4+5+6+7+8=35) publicclassTest60011{ publicstaticvoidmain(String[]args){ intri,repeat; inta[][],i,j,n,sum; Scannerin=newScanner; repeat=(); for(ri=1;ri<=repeat;ri++){ n=(); a=newint[n][n]; for(i=0;i for(j=0;j a[i][j]=(); /*---------*/ sum=0; for(i=0;i 例: 括号内是说明 输入: 1(repea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江大学 Java 语言程序设计 实验 答案 全集