题目
从标准输入读入一个 r×c 的二维整数矩阵,演示使用行指针或指针偏移量按行格式化打印整个矩阵。
输入格式:第一行输入行数 r 和列数 c;随后 r 行每行输入 c 个整数。
输出格式:输出 r 行矩阵内容,每行数字以空格分隔。
数据范围与约定:1 ≤ r, c ≤ 20。
思路与算法
1. 二维数组的连续行主序存储
Java 语言二维数组在内存中是按行连续展开的一维线性空间。元素 a[i][j] 对应的内存偏移为 *(a + i * c + j)。
2. 指针遍历方式
可通过行指针 int[]row = a[i];,结合列偏移 row[j] 完成高效率访问。
完整程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int r = sc.nextInt();
int c = sc.nextInt();
int[][] a = new int[r][c];
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
a[i][j] = sc.nextInt();
}
}
// 按行遍历格式化输出
for (int i = 0; i < r; i++) {
int[] row = a[i];
for (int j = 0; j < c; j++) {
System.out.print(row[j] + (j + 1 < c ? " " : "\n"));
}
}
}
}运行示例
输入:
1 2 3 4
5 6 7 8输出:
1 2 3 4
5 6 7 8