package s1; import java.util.Scanner; //题目:对10个数进行排序 public class Fs28 { public static void main(String[] args){ System.out.println("请输入一个不多于10位的正整数"); int [] a=new int[10]; Scanner sc=new Scanner(System.in); for (int i= 0;i<10;i++){ a[i]=sc.nextInt();} int temp=0; for (int i = 0;i <9;i ++){ for (int j=0;j<9-i;j++){ if (a[j]>a[j+1]){ temp = a[j]; a [j]=a[j+1]; a[j+1]=temp ; } } } for (int i=0;i<10;i++){ System.out.println(a[i]); } } }
package s1; import java.util.Scanner; //题目:求一个3*3矩阵对角线元素之和 public class Fs29 { public static void main(String[] args) { System.out.println("请输入一个9位的正整数"); Scanner s=new Scanner(System.in); int [][]a = new int[3][3]; for (int i=0;i<3;i++){ for (int j=0;j<3;j++){ a[i][j]=s.nextInt(); } }System.out.println("第一条斜线相加"+(a[0][0]+a[1][1]+a[2][2])); System.out.println("第一条斜线相加"+(a[2][0]+a[1][1]+a[0][2])); } }
参考写法
题目:求一个3*3矩阵对角线元素之和
程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
public class Programme29 {
public static void main(String[] args) {
System.out.println("请输入九个数字:");
Scanner scanner=new Scanner(System.in);
int[][]arr=newint[3][3];
//获取矩阵数字
for (inti = 0; i <3;i++) {
for (intj = 0; j < 3;j++) {
arr[i][j]=scanner.nextInt();
}
}
System.out.println("第一条对角线之和:"+(arr[0][0]+arr[1][1]+arr[2][2]));
System.out.println("第二条对角线之和:"+(arr[0][2]+arr[1][1]+arr[2][0]));
scanner.close();
}
}
package s1; import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; //题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中 public class Fs30 { public static void main(String[] args) { System.out.println("请输入一个数组元素为10位 用空格分开"); int[] a = new int[10]; Scanner s = new Scanner(System.in); for (int i = 0; i < 10; i++) { a[i] = s.nextInt(); } System.out.println("请输入插入的一个数"); int[] a1 = new int[a.length + 1]; int s1 = s.nextInt(); if (s1 > a[a.length - 1]) { for (int i = 0; i < a.length; i++) { a1[i] = a[i]; } a1[a1.length - 1] = s1; } else { for (int i = 0; i < a.length; i++) { if (s1 < a[i]){ for (int j=0;j<i;j++){ a1[j]=a[j]; }a1[i]=s1; for (int j=i;j<a.length;j++){ a1[j+1]=a[j]; }break; } } System.out.println("插入数以后形成新的数组为:"+Arrays.toString(a1)); } } }
参考写法
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
1、创建两个数组,如果插入的数字比数组最后一个都大,那么插入的数放在新数组最后就可以
* 2、如果插入的不是最大,那么和数组前面的数逐一比较,比较到比插入的数大就break
* 比如第i个符合条件,那么arrB[i-1]=arrA[i-1],arrB[i]=num,arrB[i+1]=arrA[i]
public static void main(String[] args) {
System.out.println("请输入一个数字:");
Scanner scanner=new Scanner(System.in);
int num=scanner.nextInt();
int[] arrA={3,5,15,36,84,99};
int[] arrB=new int[arrA.length+1];
if (num>arrA[arrA.length-1]) {
for (inti = 0; i < arrA.length; i++) {
arrB[i]=arrA[i];
}
arrB[arrB.length-1]=num;
}else {
for (inti = 0; i < arrA.length; i++) {
if (num<arrA[i]) {
for (intj = 0; j < i; j++) {
arrB[j]=arrA[j];
}
arrB[i]=num;
for (intj = i; j < arrA.length;j++) {
arrB[j+1]=arrA[j];
}
break;//这个很重要
}
}
}
System.out.println("插入一个数后的数组为:"+Arrays.toString(arrB));
scanner.close();
}
}