文章目录
1:求一个3*3矩阵对角线元素之和
<提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
/*
* 1:求一个3*3矩阵对角线元素之和 <提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
*/
Scanner sc = new Scanner(System.in);
int a[][] = new int[3][3];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out
.println("请输入第" + (i + 1) + "行,第" + (j + 1) + "列的数据:");
a[i][j] = sc.nextInt();
}
}
int s1 = 0;
int s2 = 0;
for (int i = 0; i < a.length; i++) {
s1 += a[i][i];
s2 += a[i][a.length - 1 - i];
}
System.out.println(s2);
if (a.length % 2 != 0) {
s2 = s2 - a[(a.length - 1) / 2][(a.length - 1) / 2];
}
int sum = s1 + s2;
System.out.println("3*3矩阵对角线元素之和为: " + sum);
}
}
2:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
<提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
/*
*
* 2:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
* <提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
*/
// 原数组
int num[] = new int[] { 11, 22, 33, 44, 55, 66, 77, 88 };
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
// 输入插入数据
System.out.println("请输入你要插入的数据:");
int num1 = sc.nextInt();
// 创建新的数组,比原数组多一个数据元素
int num2[] = new int[num.length + 1];
// 将原数组的元素存入新数组中
for (int i = 0; i < num2.length - 1; i++) {
num2[i] = num[i];
}
// 存放插入数据位置
int index = num2.length - 1;
// 寻找应该存入数据的位置
for (int i = 0; i < num.length; i++) {
if (num1 < num[i]) {
index = i;
break;
}
}
// 按照应该存入数据的位置,将之后数据都向后移一格
for (int i = num2.length - 1; i > index; i--) {
num2[i] = num2[i - 1];
}
// 将空出来的位置存入需要插入的数据
num2[index] = num1;
// 输出插入数据后的新数组
System.out.println("输出插入后的数组");
for (int i = 0; i < num2.length; i++) {
System.out.print(num2[i] + " ");
}
}
}
3:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
/*
* 3:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
*/
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
// 输入n个整数
System.out.print("请输入要创建的整数的个数:");
int n = sc.nextInt();
// 创建数组
int num[] = new int[n];
// 创建数组中数据
for (int i = 0; i < num.length; i++) {
System.out.println("请输入第" + (i + 1) + "个整数");
num[i] = sc.nextInt();
}
// 输出原数组
System.out.print("原数组为:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
// 换行
System.out.println();
// 创建要调整的个数
System.out.print("请输入你要调整的个数:");
int m = sc.nextInt();
// 创建新数组
int num2[] = new int[n];
int num3[] = new int[m];
// 将后半段存入数组numa中
for (int i = 0; i < num3.length; i++) {
num3[i] = num[(n - m) + i];
}
// 将num3数组写入num2数组前半段,num2数组后半段写入num数组前半段数据。
for (int i = 0; i < num2.length; i++) {
if (i >= m) {
num2[i] = num[i - m];
} else {
num2[i] = num3[i];
}
}
// 输出新数组
System.out.print("调整后的数组为:");
for (int i = 0; i < num2.length; i++) {
System.out.print(num2[i] + " ");
}
}
}
4:定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) {
/*
*
* 4:定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0
*/
// 定义一个四行四列的二维数组
int num[][] = new int[4][4];
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
// 从键盘录入
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.println("请输入第" + (i + 1) + "行,第" + (j + 1) + "列的整数");
num[i][j] = sc.nextInt();
}
}
// 输出原数组
System.out.println("输出原数组:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j] + " ");
}
System.out.println();
}
// 将对角线的值清0
for (int i = 0; i < num.length; i++) {
num[i][i] = 0;
num[i][num.length - 1 - i] = 0;
}
// 输出新数组
System.out.println("输出原数组:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j] + " ");
}
System.out.println();
}
}
}
5:定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
import java.util.Scanner;
public class Test11 {
public static void main(String[] args) {
/*
*
* 5:定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
*/
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
System.out.println("请输出n*n二维数组为:");
int n = sc.nextInt();
// 定义一个n行n列的二维数组
int num[][] = new int[n][n];
// 从键盘录入
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.println("请输入第" + (i + 1) + "行,第" + (j + 1) + "列的整数");
num[i][j] = sc.nextInt();
}
}
// 输出二维数组
System.out.println("输出原数组:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j] + " ");
}
System.out.println();
}
// 定义一个一维数组
int num1[] = new int[n];
// 将最大值存入一维数组中
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
if (num1[i] < num[i][j]) {
num1[i] = num[i][j];
}
}
}
// 输出一维数组
System.out.println("输出一维数组:");
for (int i = 0; i < num1.length; i++) {
System.out.print(num1[i] + " ");
}
}
}
6:有10个数字要求分别用选择法和冒泡法从大到小输出
import java.util.Scanner;
public class Test13 {
public static void main(String[] args) {
/*
*
* 6:有10个数字要求分别用选择法和冒泡法从大到小输出
*/
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
// 创建十个整数的一维数组
int num[] = new int[10];
// 从键盘录入
for (int i = 0; i < num.length; i++) {
System.out.println("请输入第" + (i + 1) + "个整数");
num[i] = sc.nextInt();
}
// 输出原数组
System.out.println("输出原数组:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
while (true) {
// 换行
System.out.println("----------------------");
System.out.println("1、冒泡排序");
System.out.println("2、选择排序");
System.out.println("---------------------");
System.out.println("请输入你要选择的排序方式");
int n = sc.nextInt();
if (n == 1) {
// 冒泡法
int temp = 0;
for (int i = 0; i < num.length - 1; i++) {
for (int j = 0; j < num.length - 1 - i; j++) {
if (num[j + 1] > num[j]) {
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
// 输出排序后的数组
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
System.out.println("---------------------------");
System.out.println("1、结束程序");
System.out.println("2、返回上一层");
int m = sc.nextInt();
if (m == 1) {
break;
} else if (m == 2) {
continue;
} else {
System.out.println("没有这个选项!程序强制停止");
break;
}
} else if (n == 2) {
// 选择排序
int temp = 0;
for (int i = 0; i < num.length - 1; i++) {
for (int j = i + 1; j < num.length; j++) {
if (num[j] > num[i]) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
// 输出排序后的数组
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
System.out.println("---------------------------");
System.out.println("1、结束程序");
System.out.println("2、返回上一层");
int m = sc.nextInt();
if (m == 1) {
break;
} else if (m == 2) {
continue;
} else {
System.out.println("没有这个选项!程序强制停止");
break;
}
} else {
System.out.println("没有这个选项!程序强制停止");
break;
}
}
}
}