数组练习题
一、读程序
1、写出下列代码的执行结果
public static void main(String args[]) {
int i;
int a[] = { 1, 3, 5, 7, 9, 8, 6, 4, 2 };
for (i = 0; i<= a.length / 2; i++) {
System.out.print(a[i] + a[a.length - i - 1] + " ");
}
System.out.println();
}
3 7 11 15 18
二、编程:
- 编写一段程序,对一维数组 a = {5,8,9,7,3,1,6,4,2}进行排序。
int a[]={5,8,9,7,3,1,6,4,2};
System.out.print("数组排序前:");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
Arrays.sort(a);
System.out.print("\n数组排序后:");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
2、编写一段程序,打印杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
System.out.print("请输入杨辉三角形的行数:");
Scanner scanner = new Scanner(System.in);
int rows = scanner.nextInt();
//设置杨辉三角的行数
//int rows = 10;
for(int i =0;i<rows;i++) {
int number = 1;
//打印空格字符串
System.out.format("%"+(rows-i)*2+"s","");
for(int j=0;j<=i;j++) {
System.out.format("%4d",number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
3、按照1+1+2+3+5=12的格式打印斐波那契数列(f(n)=f(n-1)+f(n-2))前8项,并求和
Int a=1,b=1,c=0;
System.out.print(a + "\t" + b + "\t");
//建立一个for循环,用于循环输出数列中第三位至第十位的数字
for (int i = 3; i <= 10; i++) {
//第三个数即为c,a+b等于c的值
c = a + b;
//将第一个加数a赋值为数列中的第二个数b的值
a = b;
//将第二个加数b赋值为数列中的第三个数c的值
b = c;
//在第二次循环打印时,将打印数列中的第四个数为:b + c = b + (a + b)
System.out.print(c + "\t");
4、给出一个数组{8,9.6,5,7,7.8,9.3,5},去掉一个最大值和一个最小值后,计算平均值
double[] arr={8,9.6,5,7,7.8,9.3,5};
Arrays.sort(arr);
double sum=0;
for (int i = 1; i < arr.length-1; i++) {
sum+=arr[i];
}
System.out.println(sum/arr.length-2);