什么是二维数组?
C 语言中的二维数组可以理解为 “数组的数组”,是一种用于存储表格型(行、列结构)数据的集合。
它的本质是在内存中以连续的一维空间存储,但通过 “行号 + 列号” 的方式来访问,逻辑上呈现为 “多行多列” 的结构。
核心特点:
1.定义格式:
基本格式为 数据类型 数组名[行数][列数];
示例:int matrix[4][4];
定义了一个 4 行 4 列的整型二维数组。
2.内存存储:
二维数组在内存中是按行连续存储的(即先存第 0 行的所有元素,再存第 1 行,以此类推)。
比如 matrix[0][0] 之后是 matrix[0][1],直到 matrix[0][3],再接着是 matrix[1][0]。
3.访问方式:
通过 数组名[行下标][列下标] 访问元素(下标从 0 开始)。
示例:matrix[2][3] 表示第 3 行、第 4 列的元素。
#include
int main(){
int arr[2][3]={
{1,2,3},
{4,5,6}
};
for(int i =0;i
int main (){
int numbers[6]; // 存储6个整数的数组
int max; // 存储最大值
printf("请输入6个整数:\n");
for(int i =0; i max){
max = numbers[i];
}
}
printf("\n这6个整数中的最大值是:%d\n", max);
return 0;
}
第2问:
请编写程序实现以下功能。
(1)从键盘输入 6 个整数。
(2)使用冒泡排序法将这 6 个整数从小到大排序。
#include \
int main() { int numbers[6]; // 定义一个数组,用于存储6个整数 int i, j, temp; // 循环变量和临时变量
// (1) 从键盘输入6个整数
for (i = 0; i < 6; i++) {
printf("请输入第 %d 个整数: ", i + 1);
scanf("%d", &numbers[i]);
}
// (2) 使用冒泡排序法将这6个整数从小到大排序
for (i = 0; i < 6 - 1; i++) { // 控制排序轮数
for (j = 0; j < 6 - i - 1; j++) { // 控制每轮比较次数
if (numbers[j] > numbers[j + 1]) { // 如果前一个数大于后一个数
// 交换两个数
temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
// 输出排序后的结果
printf("排序后的结果为: ");
for (i = 0; i < 6; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
第三问:
矩阵转置是线性代数的基本运算,就是将矩阵的行、列交换,即将行变成列,将列变成行。要求编写程序,实现输入一个 4 行 4 列的矩阵,将矩阵转置后输出。
#include
#define SIZE 4 // 定义矩阵的大小为 4x4
int main() {
int matrix[SIZE][SIZE]; // 原始矩阵
int transpose[SIZE][SIZE]; // 转置后的矩阵
int i, j;
// 1. 输入原始矩阵
printf("请输入一个 4x4 的矩阵(每行输入 4 个整数,用空格分隔):\n");
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 2. 计算转置矩阵
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
transpose[j][i] = matrix[i][j]; // 行变列,列变行
}
}
// 3. 输出转置后的矩阵
printf("\n转置后的矩阵为:\n");
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
printf("%d\t", transpose[i][j]);
}
printf("\n");
}
return 0;
}