资源描述
实验9-1 Method的使用(二)
1. 将一个整数逆序输出
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个整数,将它逆序输出。
规定定义并调用函数reverse(number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。
例:括号内是说明
输入
4 (repeat=4)
123456 -100 -2 99
输出
654321
-1
-2
99
import java.util.Scanner;
public class Test50009{
public static void main(String args[]){
int ri,repeat;
long n, res;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
n=in.nextInt();
/*---------*/
res=reverse(n);
System.out.println(res);
}
}
/*---------*/
static long reverse(long number){
int flag=1;
long a=0,digit;
if(number<0){
flag=-1;
number=-number;
}
while(number>0){
digit=number%10; //分离出个位数字
a=a*10+digit; //形成当前的逆序数
number=number/10;
}
return flag*a;
}
}
2. 十进制转换二进制
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入1 个正整数n,将其转换为二进制后输出。
规定定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。
输出语句:System.out.print(t); //t为某位二进制数
例:括号内是说明
输入:
3 (repeat=3)
15
100
0
输出:
1111
1100100
0
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)的输出虽然与规定有所出入,但上传是对的的。
3. 用函数求三个数的最大值
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入三个整数a、b和c,输出其中较大的数。规定定义和调用函数max(a, b, c)找出a、b、c中较大的数,函数形参a、b和c的类型是int。
输入输出示例:括号内是说明
输入
3 (repeat=3)
输入:
5 8 9 (a=5, b=8)
-1 -10 -5 (a=-1, b=-10)
1 1 1 (a=1, b=1)
输出:
max(5,8,9)=9
max(-1,-10,-5)=-1
max(1,1,1)=1
import java.util.Scanner;
public class Test50011 {
public static void main(String args[]) {
int ri, repeat;
int a,b,c,maximun;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for (ri=1; ri<= repeat; ri++) {
a=in.nextInt();
b=in.nextInt();
c=in.nextInt();
/*-----------------*/
maximun=maximun(a,b,c);
System.out.println("max("+a+","+b+","+c+")="+maximun);
}
}
/*-------------------*/
static int maximun(int a,int b,int c){
int max;
max=a;
if(max<b)max=b;
if(max<c)max=c;
return max;
}
}
实验9-2 一维数组的使用
4. 求平均值
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n (1<n≤10),再输入n个整数,输出平均值。
例:括号内是说明
输入
2 (repeat=2)
3 1 2 -6
5 12 2 5 4 0
输出
aver=-1.0
aver=4.6
import java.util.Scanner;
public class Test60001{
public static void main(String []args){
int ri, repeat;
int i, n, sum,a[];
float aver;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i<n; i++)
a[i]=in.nextInt(); //这个循环输入数组各元素
/*--------------*/
sum=0;
for(i=0; i<n; i++) //这个循环实现累加
sum+=a[i];
aver=(float)sum/n; //求平均值,注意要先把sum转换成float,再计算
System.out.println("aver="+aver);
}
}
}
5. 求最大值及其下标
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n (1<n≤10),再输入n个整数,输出最大值极其下标(设最大值惟一,下标从0开始)。
例:括号内是说明
输入
3 (repeat=3)
3 1 6 4
3 10 8 1
5 1 2 5 4 0
输出
max=6,index=1 (最大值6的下标是1)
max=10,index=0 (最大值10的下标是0)
max=5,index=2 (最大值5的下标是2)
import java.util.Scanner;
public class Test60002{
public static void main(String []args){
int ri, repeat;
int i, index, n, a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
a=new int[n] ;
for(i=0; i<n; i++)
a[i]=in.nextInt();
/*--------------*/
index=0; //用index保存最大数的下标,开始假设a[0]是最大数
for(i=1; i<n; i++)
if(a[index]<a[i]) index=i;
//a[i]与当前最大数a[index]比较,若a[i]更大,index变为i
System.out.println("max="+a[index]+",index="+index);
}
}
}
6. 逆序输出
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n (1<n≤10),再输入n个整数,按逆序输出这些数。
例:括号内是说明
输入
2 (repeat=2)
4 10 8 1 2
5 1 2 5 4 0
输出
2 1 8 10
0 4 5 2 1
import java.util.Scanner;
public class Test60003{
public static void main(String []args){
int ri, repeat;
int i, n, temp,a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i<n; i++)
a[i]=in.nextInt();
/*--------------*/
for(i=0; i<n/2; i++){ //a[i]与a[n-1-i]互换,注意互换次数
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
}
for(i=0; i<n; i++)
System.out.print(a[i]+" ");
System.out.println();
}
}
}
7. 互换最小值和最大值
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n,再输入n个整数,将最小值与第一个数互换,最大值与最后一个数互换,然后输出互换后的n个数。
例:括号内是说明
输入
3 (repeat=3)
5 4 3 5 1 2
4 1 5 6 7
5 5 4 3 2 1
输出
1 3 2 4 5
1 5 6 7
1 4 3 2 5
import java.util.Scanner;
public class Test60004{
public static void main(String []args){
int ri, repeat;
int i, index, n, t,a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i<n; i++)
a[i]=in.nextInt();
/*--------------*/
index=0; //找最小数
for(i=0; i<n; i++)
if(a[index]>a[i]) index=i;
t=a[index]; a[index]=a[0];a[0]=t; //互换
index=0; //找最大数
for(i=0; i<n; i++)
if(a[index]<a[i]) index=i;
t=a[index]; a[index]=a[n-1];a[n-1]=t; //互换
for(i=0; i<n; i++) //输出
System.out.print(a[i]+" ");
System.out.println();
}
}
}
说明:不能把两个循环合成一个,否则当数组元素为“5 4 3 2 1”时犯错。
展开阅读全文