130道基础OJ编程题之: 89~107
@[toc]
89. BC101 班级成绩输入输出
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
for(int i = 0; i < 5; i++) {
float sum = 0.0f;
float score = 0.0f;
int j = 0;
for(j = 0; j < 5;j++) {
score = in.nextFloat();
sum += score;
System.out.printf("%.1f ",score);
}
System.out.printf("%.1f\n",sum);
}
}
}
99. BC102 矩阵元素定位
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n = in.nextInt();
int m = in.nextInt();
int[][] arr = new int[n][m];
for(int i = 0; i < n; i++) {
for(int j = 0; j < m;j++) {
arr[i][j] = in.nextInt();
}
}
int n2 = in.nextInt();
int m2 = in.nextInt();
System.out.println(arr[n2 - 1 ][m2 - 1]);
}
}
100. BC103 序列重组矩阵
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] arr = new int[n * m ];
for(int i = 0; i < n * m; i++) {
arr[i] = in.nextInt();
}
for(int i = 1; i <= n * m; i++) {
System.out.printf("%d ",arr[i-1]);
if(i % m == 0) {
System.out.println();
}
}
}
}
101. BC104 最高身高
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int x = 0;
int y = 0;
int max = 0;
// 注意它的下标,不是从 0 开始,而是从 1 开始的
for(int i = 1; i <= n; i++ ) {
for(int j = 1; j <= m ;j++) {
int num = in.nextInt();
if( num > max) {
max = num;
x = i;
y = j;
}
}
}
System.out.printf("%d %d",x,y);
}
}
102. BC105 矩阵相等判定
java
import java.util.Scanner;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] arr = new int[n * m];
int[] arr2 = new int[n* m];
for(int i = 0;i < n * m; i++) {
arr[i] = in.nextInt();
}
for(int i = 0; i < n * m ; i++) {
arr2[i] = in.nextInt();
}
if(Arrays.equals(arr,arr2)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
103. BC106 上三角矩阵判定
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] a = new int[n][n];
int i = 0;
int j = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
a[i][j] = in.nextInt();
}
}
//判断
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (i > j) {
if (a[i][j] != 0) {
// 下三角有不是0的就不满足printf("NO");
System.out.println("NO");
return;
}
}
}
}
System.out.println("YES");
}
}
104. BC107 矩阵转置
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(); // 2
int m = in.nextInt(); // 3
int[][] arr = new int[n][m];
for(int i = 0; i < n; i ++) {
for(int j = 0; j < m; j++) {
arr[i][j] = in.nextInt(); // 读取
}
}
for(int i = 0; i < m; i ++) { // 2
for(int j = 0; j < n; j++) { // 3
System.out.printf("%d ",arr[j][i]); // 注意: 这里防止数组越界了,因为是行列倒置了。
}
System.out.println();
}
}
}
105. BC108 矩阵交换
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[][] arr = new int[n][m];
// 读取输入内容
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = in.nextInt();
}
}
int time = in.nextInt(); // 读取判断,输入替换的次数
for (int i = 0; i < time; i++) {
// 读取判断是否,为是 一个 "c" 还是 "r"
String str = in.next();
// 读取替换的内容
int a = in.nextInt();
int b = in.nextInt();
if (str.contains("c")) { // // 当且仅当此字符串包含指定的char值序列时才返回true。 // 为 c 进行一个行列的变换
for (int h = 0; h < n; h++) {
int temp = arr[h][a - 1];
arr[h][a - 1] = arr[h][b - 1]; // 行列内容替换
arr[h][b - 1] = temp;
}
} else if (str.contains("r")) { // 为 r 是对行进行替换,交换
for (int h = 0; h < m; h++) {
int temp = arr[a - 1][h];
arr[a - 1][h] = arr[b - 1][h]; // 行列内容替换
arr[b - 1][h] = temp;
}
}
}
// 遍历数组,
for(int i = 0; i < n; i++) {
for(int j = 0; j < m ;j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
106. BC109 杨辉三角
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
if (i == j) { // 当 i == j 的时候,就是最边上的位置,是为 1 的
arr[i][j] = 1;
} else if (j == 0) { // 第一列的内容是为 1 的
arr[i][j] = 1;
} else if( i > 1 && j > 0){ // 否则每个数等于它左上方和上方的两数之和,第一列和对角位置,不需要动
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
// 遍历数组
for(int i = 0; i < n; i++) {
for(int j = 0; j <= i; j++) {
System.out.printf("%5d", arr[i][j]);
}
System.out.println();
}
}
}
107. BC110 井字棋
java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
char[][] arr = new char[3][3];
for (int i = 0; i < arr.length; i++) {
// arr[i].length 表示的是第一行的字符的个数
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = in.next().charAt(0); // 字符串截取第一个字符内容
}
}
// 判断,是否胜利,横向,竖向,正对角线,右对角线
// 竖
for (int i = 0; i < arr.length; i++) {
if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i]) {
if (arr[0][i] == 'K') {
System.out.println("KiKi wins!");
return;
} else if (arr[0][i] == 'B') {
System.out.println("BoBo wins!");
return;
} else {
System.out.println("No winner!");
return;
}
}
}
// 横向
for (int i = 0; i < arr.length; i++) {
if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]) {
if (arr[i][0] == 'K') {
System.out.println("KiKi wins!");
return;
} else if (arr[i][0] == 'B') {
System.out.println("BoBo wins!");
return;
} else {
System.out.println("No winner!");
return;
}
}
}
// 正对角线
if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) {
if (arr[0][0] == 'K') {
System.out.println("KiKi wins!");
return;
} else if (arr[0][0] == 'B') {
System.out.println("BoBo wins!");
return;
} else {
System.out.println("No winner!");
return;
}
}
// 右对角线
if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0]) {
if (arr[0][2] == 'K') {
System.out.println("KiKi wins!");
return;
} else if (arr[0][2] == 'B') {
System.out.println("BoBo wins!");
return;
} else {
System.out.println("No winner!");
return;
}
}
System.out.println("No winner!");
}
}
最后:
"在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。"