浙大JAVA实验题答案09answerWord文档下载推荐.docx
- 文档编号:21211937
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:10
- 大小:17.82KB
浙大JAVA实验题答案09answerWord文档下载推荐.docx
《浙大JAVA实验题答案09answerWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《浙大JAVA实验题答案09answerWord文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
1100100
importjava.util.Scanner;
publicclassTest50010{
publicstaticvoidmain(Stringargs[]){
intri,repeat;
inti,n;
Scannerin=newScanner(System.in);
repeat=in.nextInt();
for(ri=1;
ri<
=repeat;
ri++){
n=in.nextInt();
dectobin(n);
System.out.println();
}
}
staticvoiddectobin(intn){
Stringt="
"
;
//保存二进制数
do{
n=n/2;
II获得除2后的商
}while(n>
0);
System.out.print(t);
//本方法无返回值,需要在方法体中输出结果
说明:
本题中方法dectobin(n)的输出虽然与要求有所出入,但上传是正确的
以下用递归算法实现方法的设计:
50001求1+1/2!
+....+1/n!
10),做repeat次下列运算:
输入1个正整数n,计算s的前n项的和(保留4位小数)。
s=1+1/2!
要求定义并调用函数fact(n)计算n的阶乘。
2(repeat=2)
2(n=2)
10(n=10)
1.51.7183importjava.util.Scanner;
publicclassTest50001{
publicstaticvoidmain(String[]args){
doubles;
Scannerin=newScanner(System.in);
for(ri=1;
ri++){n=in.nextInt();
/**/
s=0;
for(i=1;
i<
=n;
i++)s+=1.0/fact(i);
System.out.println((long)(s*10000+0.5)/10000.);
*/
/*
staticdoublefact(intn){//递归方法
if(n==1)return1;
elsereturnn*fact(n-1);
50002求a+aa+aaa+aa…a
10),做repeat次下列运算:
输入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{
intri,repeat;
inti,n,a;
longsn;
repeat=in.nextInt();
ri<
ri++){
a=in.nextInt();
sn=0;
i++)sn+=fn(a,i);
System.out.println(sn);
*/
static
intfn(inta,intn){//递归方法
if(n==1)returna;
elsereturnfn(a,n-1)*10+a;
50006输出Fibonacci序列
输入2个正整数m和n(1<
=m,*=10000),输出m和n之间所有的Fibonacci数。
Fibonacci序列(第1项起):
1123581321……
要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。
例如,fib⑺的返回值是13。
System.out.print(f+"
);
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至U6000之间的Fibonacci数)
publicclassTest50006{
inti,m,n;
longf;
m=in.nextInt();
i=1;
f=1;
while(fv=n){
if(f>
=m)System.out.print(f+"
i++;
f=fib(i);
longfib(intn){//递归方法
if(n==1||n==2)return
elsereturnfib(n-1)+}
1;
fib(n-2);
实验9-2一维数组的使用
1.求平均值
输入一个正整数n(1<
n<
10),再输入n个整数,输出平均值。
312-6
5122540
aver=-1.0
aver=4.6
publicclassTest60001{
publicstaticvoidmain(String[]args){
inti,n,sum,a[];
floataver;
ri++){n=in.nextInt();
a=newint[n];
for(i=0;
i<
n;
i++)
a[i]=in.nextInt();
//这个循环输入数组各元素
sum=O;
n;
i++)//这个循环实现累加
sum+=a[i];
aver=(float)sum/n;
//求平均值,注意要先把sum转换成float,再计算
System.out.println("
aver="
+aver);
2.求最大值及其下标
输入一个正整数n(1<
10),再输入n个整数,输出最大值极其下标(设最大值惟一,下标从0开始)例:
3164
31081
512540
max=6,index=1(最大值6的下标是1)
max=10,index=0(最大值10的下标是0)
max=5,index=2(最大值5的下标是2)
publicclassTest60002{
inti,index,n,a[];
a=newint[n];
a[i]=in.nextInt();
index=0;
//用index保存最大数的下标,开始假设a[0]是最大数
for(i=1;
if(a[index]<
a[i])index=i;
//a[i]与当前最大数a[index]比较,若a[i]更大,index变为i
max="
+a[index]+"
index="
+index);
3.逆序输出
10),再输入n个整数,按逆序输出这些数
410812
512540
21810
04521
publicclassTest60003{
inti,n,temp,a[];
Scannerin=newScanner(System.in);
a=newint[n];
n/2;
i++){〃a[i]与a[n-1-i]交换,注意交换次数
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
i++)//输出一个数组
System.out.print(a[i]+"
4.交换最小值和最大值
输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
543512
41567
554321
13245
1567
14325
publicclassTest60004{
inti,index,n,t,a[];
index=0;
//找最小数,与第一个数交换
if(a[index]>
t=a[index];
a[index]=a[0];
a[0]=t;
//交换
//找最大数,与最后一个数交换
a[index]=a[n-1];
a[n-1]=t;
不能把两个循环合成一个,否则当数组元素为“54321”时出错。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大 JAVA 实验 答案 09 answer
![提示](https://static.bdocx.com/images/bang_tan.gif)