c语言二维数组定义和赋值,c语言二维数组的初始化
Yyds干货库存
大家好,我是李泽。希望看完之后能帮到你。如有不足请指正!一起学习交流。
2021博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~ ~阿里云专家博主明星博主~掘金InfoQ ~ P Creator ~周榜109(总榜886) 35w全网访问量
本文原载于P,作者Yuze。如需转载请告知。
个人主页51Ctop P博客
欢迎喜欢你喜欢的留言。
系列专栏51Ctop _ 博客的分类
我们不在自己选择的舞台上,表演也不是自己选择的剧本。
二维数组的定义和参考前面的博客介绍过,一维数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中,很多量是二维或者多维的,所以C语言允许构造多维数组。多维数组中的一个元素有多个下标来标识它在数组中的位置,所以它也被称为多下标变量。本片介绍二维数组。
1.二维数组的定义二维数组的声明与一维数组相同,其一般形式如下:
类型描述符数组名称[常量表达式1][常量表达式2];其中“常量表达式1”称为行下标,“常量表达式2”称为列下标。二维数组下标的取值范围如下:
行下标的取值范围是:0~n-1。列下标的取值范围是:0~m-1。最大元素标识符下的二维数组:array[n-1][m-1]。例如,定义一个3行3列的整数数组。
Int array[3][3]上面的代码声明了一个3行3列的二维数组。它的数组名是array,下标变量的类型是integer。
如下图所示,这个数组中有3x3个下标变量。
在C语言中,二维数组是按行排列的,即按行的顺序存储,先存储array[0],再存储arrar[1],再存储array[2]。每行有三个元素,也是依次存储的。
注意:在C语言中,二维数组是按行排列的。
2.二维数组元素的引用。二维数组元素的一般引用形式如下:
数组名[下标][下标];注意:二维数组的下标可以是整数常量,也可以是整数表达式。
比如:A[3][4];用三行四列表示数组A的元素。下标和数组描述在形式上有些相似,但是它们有完全不同的含义。数组描述的方括号中给出了一个维度的长度,即可以去掉目标的最大值;数组元素中的下标是元素在数组中的位置标识。前者只能是常量,后者可以是常量、变量或表达式。
注意:无论是行下标还是列下标,其中的索引值都是从0开始的。注意:和一维数组一样,我们都需要注意下标越界的问题。练习一:一个学习小组有5个人,每个人有三次考试成绩。求全组平均分和各科总平均分。代码如下:
#定义
#包含stdio.h
int main(){
int i,j;//二维数组下标
int sum=0;//当前科目的总成绩
int平均值;//总平均分
int v[3];//所有科目的平均分
int a[3][5];//一个二维数组,用来保存每个学生各科成绩,三门,五个学生。
Printf(请输入学生各科成绩:\ n );
for(I=0;i3;我)
{
printf( \ n一科算五级\ n );
如果(i==0)
Printf(数学学科:);
如果(i==1)
Printf(中文主语:);
如果(i==2)
Printf(英语主语:);
for(j=0;j 5;j)
{
scanf(%d ,a[I][j]);//输入每个学生的科目成绩。
sum=a[I][j];//计算当前科目的总分(总和)
}
v[I]=sum/5;//当前科目的平均分,总分除以5
sum=0;//将当前科目的总分清零
}
平均值=(v[0]v[1]v[2])/3;
printf( \ n数学:%d\n中文:% d \ n英文:% d \ n ,v[0],v[1],v[2]);
Printf(平均分数:%d\n ,平均);
返回0;
}
编译和执行上述代码时,可能会产生以下结果:
二维数组初始化二维数组初始化也在类型描述时给下标变量赋初始值。二维数组可以按行分段赋值,也可以按行连续赋值。这是一个3行4列的数组:
逐行分段赋值可以写成。int a[3][4]={
{0,1,2,3},/*初始化索引号为0的行*/
{4,5,6,7},/*初始化索引号为1的行*/
{8,9,10,11} /*初始化索引号为2的行*/
按行连续赋值可以写成,注意:这相当于上面的初始化。int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11 };
访问二维数组的元素int val=a[2][3];
练习2:获取每行和每列中数组元素的值,如以下代码所示:
#定义
#包含stdio.h
int main(void){
int i,j;
int arr[3][3]={ { 1,2,3 },{ 4,5,6 },{ 7,8,9 } };
for(I=0;i3;我)
{
for(j=0;j 3;j)
{
printf(arr[%d][%d]=[%d] [%p]\n ,I,j,arr[i][j],arr[I][j]);
}
printf( \ n );
}
返回0;
}当编译并执行上述代码时,会产生以下结果。线性、连续和递增。
初始化二维数组要注意几点。1.您只能为某些元素赋值,未赋值的元素将自动取“0”值。例如:
int arr[3][3]={{1,2},{2,3},{3,4 } };
就是给每行的第一个列元素赋值,未赋值元素的值为0。赋值后每个元素的值为:
1 2 0
2 3 0
3 4 0
2.如果所有元素都被赋值,则可能不会给出第一维的长度。例如:
int arr[3][3]={{1,2,3},{2,3,4},{3,4,5 } };
也可以写成是:
int arr[][3]={{1,2,3},{2,3,4},{3,4,5 } };
注意:行可以省略,列不能省略。
3.二维数组可以看作嵌套的一维数组;如果一个数组的每个元素都是另一个数组,那么它就是一个二维数组。当然,前提是元素的类型必须相同。按照这种分析,一个二维数组也可以分解成多个一维数组,C语言允许这种分解。
比如二维数组a[3][4]可以分解成三个一维数组,数组名分别为a[0]、a[1]和a[2]。这三个一维数组可以直接使用。所有三个一维数组都有四个元素。比如一维数组a[0]的元素有A [0],a[0][1],a[0][2],a[0][3]。
Yuze 51Ctop,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。