C语言一维数组与二维数组详解及代码实例

简介: C语言一维数组与二维数组详解及代码实例

一、引言


在C语言中,数组是一种重要的数据结构,它允许我们存储多个相同类型的元素,并通过索引来访问这些元素。一维数组是最简单的数组形式,用于存储线性数据;而二维数组则用于存储表格型数据,如矩阵。本文将详细介绍一维数组和二维数组的基本概念、使用方法和代码实例。


二、一维数组


1.概念

一维数组是由一系列相同类型的元素组成的线性表,每个元素都有一个唯一的索引值,用于标识其在数组中的位置。在C语言中,数组的索引值从0开始。

2.声明与初始化

声明一维数组时,需要指定数组的类型和大小。例如,声明一个包含10个整数的数组可以写作:

int array[10];

初始化数组时,可以在声明时直接为数组元素赋值。例如:

int array[5] = {1, 2, 3, 4, 5};

3.访问与修改

通过索引值可以访问和修改数组中的元素。例如,访问数组中的第一个元素可以写作array[0],修改数组中的第三个元素为10可以写作array[2] = 10。

4.代码实例

以下是一个简单的一维数组代码实例,用于计算数组中所有元素的和:

#include <stdio.h>
int main() { 
int array[5] = {1, 2, 3, 4, 5}; 
int sum = 0; 
for (int i = 0; i < 5; i++) { 
sum += array[i]; 
} 
printf("The sum of array elements is: %d\n", sum); 
return 0; 
}


三、二维数组


1.概念

二维数组是由多个一维数组组成的表格型数据结构,每个一维数组称为二维数组的行,每个元素称为二维数组的元素。在C语言中,二维数组的索引值也从0开始。

2.声明与初始化

声明二维数组时,需要指定数组的行数和列数。例如,声明一个3行4列的整数二维数组可以写作:

int matrix[3][4];

初始化二维数组时,可以在声明时直接为数组元素赋值。例如:

int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};

3.访问与修改

通过行索引和列索引可以访问和修改二维数组中的元素。例如,访问二维数组中第一行第二列的元素可以写作matrix[0][1],修改二维数组中第二行第三列的元素为10可以写作matrix[1][2] = 10。

4.代码实例

以下是一个简单的二维数组代码实例,用于计算矩阵的转置:

#include <stdio.h>
#define ROWS 2 
#define COLS 3 
void transpose(int matrix[ROWS][COLS], int transposeMatrix[COLS][ROWS]) { 
for (int i = 0; i < ROWS; i++) { 
for (int j = 0; j < COLS; j++) { 
transposeMatrix[j][i] = matrix[i][j]; 
} 
} 
} 
int main() { 
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}}; 
int transposeMatrix[COLS][ROWS]; 
transpose(matrix, transposeMatrix); 
printf("Original matrix:\n"); 
for (int i = 0; i < ROWS; i++) { 
for (int j = 0; j < COLS; j++) { 
printf("%d ", matrix[i][j]); 
} 
printf("\n"); 
} 
printf("Transposed matrix:\n"); 
for (int i = 0; i < COLS; i++) { 
for (int j = 0; j < ROWS; j++) { 
printf("%d ", transposeMatrix[i][j]); 
} 
printf("\n"); 
} 
return 0; 
}

以上代码首先定义了一个二维数组matrix,然后定义了一个用于存储转置矩阵的二维数组transposeMatrix。transpose函数用于计算矩阵的转置,最后在主函数中输出原始矩阵和转置矩阵。

相关文章
|
1天前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
1天前
|
算法 编译器 C语言
猜数字游戏C语言代码实现
猜数字游戏C语言代码实现
|
1天前
|
C语言
【C语言刷题每日一题】一维数组的交换
【C语言刷题每日一题】一维数组的交换
|
1天前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
1天前
|
存储 安全 Serverless
扫雷游戏C语言代码实现——万字长文超详细,手把手教你实现,新手也能学会
扫雷游戏C语言代码实现——万字长文超详细,手把手教你实现,新手也能学会
|
2天前
|
C语言
【C语言】:详解函数指针变量,函数指针数组及转移表
【C语言】:详解函数指针变量,函数指针数组及转移表
8 2
|
2天前
|
C语言
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
6 1
|
2天前
|
Serverless C语言
【C语言】:对(一维)数组与指针的深入理解(1)
【C语言】:对(一维)数组与指针的深入理解(1)
5 1
|
1天前
|
C语言
【C语言刷题系列】轮转数组
【C语言刷题系列】轮转数组
|
1天前
|
C语言
【C语言基础篇】数组传参规则详解
【C语言基础篇】数组传参规则详解