实验9-1 Method的使用(二)
程序填空题,不要改变与输入输出有关的语句。
50010十进制转换二进制
输入一个正整数repeat (0
输入1个正整数n,将其转换为二进制后输岀。
要求定义并调用函数dectobin(n),它的功能是输出n的二进制。例如,调用dectobin(lO),输出 1010c
输出语句:System, out. print (t) ;//t为某位二进制数
例:括号内是说明
输入:
3 (repeat=3)
15
100
0
输出:
1111
1100100
0
import java. util. Sea rm er;
public class Test50010{
public static void ni3in(String args[]) {
int ri, repeat;
int i, n;
Seanner in二new Scanner(System, in);
repeat二in. nextTnt ();
for(ri=l;ri<=repeat;ri++){
n=in? nextlnt ();
/**/
dectobin(n);
System? out? printin ();
}
}
/**/
static void dectobin(int n){
String t=" n ; //保存二进制数
do {
n=n/2;//获得除2后的商
}while(n>0);
System, out .print (t) ; //木方法无返回值,需要在方法体中输!11结果
}
}
说明:本题中方法dectobin(n)的输岀虽然与要求有所岀入,但上传是正确的。
以下用递归算法实现方法的设计:
50001 求 1 + 1/2! +???? + 1/n!
输入一个正整数repeat (0
s 二 1 + 1/2! +????+ 1/n!
要求定义并调用函数fact (n)计算n的阶乘。
例:括号内是说明 输入:
(repeat二2)
2(n=2)
10(n=10)
输出:
1. 5
1.7183
import java .util. Scannet;
public class Test50001 {
public static void inain(String[] args) {
int ri,repeat;
int i, n;
double s;
Scanner in=new Scanner (System, in); repeat二in. nextlnt (); for(ri=l;ri<=repeat;ri++) { n二in. ncxtlnt ();
/**/
s=0;
for(i=l;i<=n;i++) s+=l? Q/fact(i);
System, out. printin ((long) (s*10000+0? 5)/10000.);
/**/
static double fact (int n) {//递归方法 if(n==l)return 1;
else return n^fact(n-1);
}
50002 求 a+aa+aaa+aa-e-a
输入一个正整数repeat (0
要求定义并调用函数f n (a, n),它的功能是返冋aa???a( n个小。例如,f n (3, 2)的返回值是33。 例:括号内是说明
输入
2 (repeat二2)
2 3 (a=2, n二3)
8 5 (a二& 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=ncw Scanner(System, in); repeat二in. nextlnt ();
for (ri=l; ri〈二repeat; ri++) {
a二in. nextlnt (); n二in. nextlnt ();
/**/
sn=0;
for(i=l;i<=n;i++)
sn+=fn (a, i);
System, out. println(sn);
}
}
/**/
static int fn