浙大JAVA-实验题答案09answer

  • 格式:doc
  • 大小:60.50 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙大JAVA-实验题答案09answer

实验9-1 Method的使用(二)

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

50010 十进制转换二进制

输入一个正整数 repeat (0

输入1 个正整数n,将其转换为二进制后输出。

要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。

输出语句:System.out.print(t); //t为某位二进制数

例:括号内是说明

输入:

3 (repeat=3)

15

100

输出:

1111

1100100

import java.util.Scanner;

public class Test50010{

public static void main(String args[]){

int ri,repeat;

int i,n;

Scanner in=new Scanner(System.in);

repeat=in.nextInt();

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

n=in.nextInt();

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

dectobin(n);

System.out.println();

}

}

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

static void dectobin(int n){

String t=""; //保存二进制数

do {

t=n%2+t; //n除2后的余数拼接到t的前面

n=n/2; //获得除2后的商

}while(n>0);

System.out.print(t); //本方法无返回值,需要在方法体中输出结果 }

}

说明:本题中方法dectobin(n)的输出虽然与要求有所出入,但上传是正确的。

以下用递归算法实现方法的设计:

50001 求1 + 1/2! +....+ 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)

输出:

1.5

1.7183

import java.util.Scanner;

public class Test50001 {

public static void main(String[] args) {

int ri,repeat;

int i,n;

double s;

Scanner in=new Scanner(System.in);

repeat=in.nextInt();

for(ri=1;ri<=repeat;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.);

}

}

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

static double fact(int n) {//递归方法

if(n==1)return 1;

else return n*fact(n-1);

}

}

50002 求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)

2 3 (a=2, n=3)

8 5 (a=8, n=5)

输出

246 (2+22+222)

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

import java.util.Scanner;

public class Test50002{

public static void main(String args[]){

int ri, repeat;

int i, n,a;

long sn;

Scanner in=new Scanner(System.in);

repeat=in.nextInt();

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

a=in.nextInt();

n=in.nextInt();

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

sn=0;

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

sn+=fn(a,i);

System.out.println(sn);

}

}

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

static int fn(int a,int n){ //递归方法