一小球从100 米高度自由落下,每次落地后反跳回原高度的一半在落下,求他第10 次落地时,共经过多少米?第十次反跳高度是多少?
答案:
double high = 100, sum = 100;
for (int i = 2; i <= 10; i++) {
sum += high;
high /= 2;
}
high /= 2;
System.out.println(sum);
System.out.println(high);
任意输入一个整形数组,利用冒泡排序法将其排序,要求从小到大排序,冒泡排序必须优化。
答案:
int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };// 8,7,6,5,4,3,2,1, 9
for (int i = a.length - 1; i >= 1; i--) {// 外层循环控制比较的轮数
boolean flag = true;
for (int j = 0; j < i; j++) {// 比较相邻的两个元素,较大的数往后冒泡
if (a[j] > a[j + 1]) {// 前一个数比后一个数大
int temp = a[j];// 把前一个大的元素保存到临时变量中
a[j] = a[j + 1];// 把后一个小的元素保存到第一元素中
a[j + 1] = temp;// 把临时变量(也就是第一个元素值),保存到第二个元素中
flag = false;// 假如有过交换 flag变成false
}
}
if (flag) {
break;
}
}
System.out.println(Arrays.toString(a));
用数组和递归二种方法实现:打印出斐波拉契数列的前 20 项:1,1,2,3,5,8........,后一项等于前两 项之和 (数组和递归各5分)
答案:
利用数组实现:
public static void main(String[] args) {
int[] a = new int[20];
a[0] = 1;
a[1] = 1;
System.out.println(a[0]);
System.out.println(a[1]);
for (int i = 2; i < a.length; i++) {
a[i] = a[i - 1] + a[i - 2];
System.out.println(a[i]);
}
}
答案:
用递归实现:
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
System.out.println(f(i));
}
}
public static int f(int num) {
if (num == 1) {
return 1;
} else if (num == 2) {
return 1;
} else {
return f(num - 1) + f(num - 2);
}
}
编写java程序,将二维数组中的行列互换按下图显示出来(输出原数组和转换后的数组)。
答案:
public class Eval { // 创建类
public static void main(String[] args) {
int arr[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
System.out.println("数组原有内容:");
for(int i = 0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
System.out.println("行列互换后数组内容:");
for(int i = 0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[j][i]);
}
System.out.println();
}
}
}
软测5班有5位学员的成绩分布是60,80,90,100,70,请用数组的方法输出最高分、最低分、平均分
答案:
int[] a = { 100, 90, 80, 70, 60 };
int max = a[0];
int min = a[0];
double sum = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] > max) {
max = a[i];
}
if (min > a[i]) {
min = a[i];
}
sum += a[i];
}
System.out.println("最高分:" + max);
System.out.println("最低分:" + min);
System.out.println("平均分:" + sum / a.length);
将一个字符数组倒置后输出。倒置是指将字符按相反顺序排列,例如原字符数组顺序是: {'a', 'b', 'c', 'd', 'e'}; 倒置后的顺序为:{'e', 'd', 'c', 'b', 'a'}
答案:
{'a', 'b', 'c', 'd', 'e'}; 倒置后的顺序为:{'e', 'd', 'c', 'b', 'a'}。
char[] ch = { 'a', 'b', 'c', 'd', 'e' };
char[] chBak = new char[ch.length];
for (int i = 0, j = ch.length - 1; i < chBak.length; i++, j--) {
chBak[i] = ch[j];
}
System.out.println(Arrays.toString(chBak));
有 15 个数存放在一个数组中,输入一个数,要求查找出该数是数组中第几个元素的值。 如果该数不在数组中,则输出“无此数”。以 15 个数用赋初值的方法在程序中给出。要 找的数用 Scanner 的 nextInt 方法输入(15分)。
答案:
Scanner input = new Scanner(System.in);
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
System.out.print("num:");
int num = input.nextInt();
boolean flag = true;
for (int i = 0; i < a.length; i++) {
if (num == a[i]) {
System.out.print("第" + (i + 1) + "个元素");
flag = false;
break;
}
}
if (flag) {
System.out.println("无此数");
}