C语言二维数组知识点介绍

数组可以看作是一行连续的数据,只有一个下标,称为一维数组。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。

C语言二维数组知识点介绍

二维数组的定义一般形式是:

dataType arrayName[length1][length2];

其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的埠度,length2 为第二维下标的埠度。例如:

int a[3][4];

定义了一个3行行4列的数组,共有3×4=12个元素,数组名为a,即:

a[0][0], a[0][1], a[0][2], a[0][3]

a[1][0], a[1][1], a[1][2], a[1][3]

a[2][0], a[2][1], a[2][2], a[2][3]

在二维数组中,要定位一个元素,必须给出一维下标和二维下标,就像在一个平面中确定一个点,要知道x坐标和y坐标。例如,a[3][4] 表示a数组第3行第4列的元素。

二维数组在概念上是二维的,但在内存中地址是连续的,也就是说存储器单元是按一维线性排列的。那么,如何在一维存储器中存放二维数组呢?有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。

在C语言中,二维数组是按行排列的。也就是先存放a[0]行行,再存放a[1]行行,最后存放a[2]行行;每行行中的四个元素也是依次存放。数组a为int类型,每个元素占用4个字节,整个数组共占用用4×(3×4)=48个字节。

【示例】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。

-- 张 王 李 赵 周

Math 80 61 59 85 76

C 75 65 63 87 77

English 92 71 70 90 85

可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:

#include

int main(){

int i, j; //二维数组下标

int sum=0; //当前科目的总成绩

int average; //总平均分

int v[3]; //各科平均分

int a[5][3]; //用来保存每个同学各科成绩的二维数组

printf("Input score:

");

for(i=0; i<3; i++){

for(j=0; j<5; j++){11.

scanf("%d", &a[j][i]); //输入每个同学的'各科成绩

sum+=a[j][i]; //计算当前科目的总成绩

}

v[i]=sum/5;

sum=0;

// 当前科目的平均分

}

average =(v[0]+v[1]+v[2])/3;

printf("Math: %d

C Languag: %d

English: %d

", v[0], v[1],v[2]);

printf("Total:%d

", average);

return 0;

}

运行结果:

Input score:

80 61 59 85 76 75 65 63 87 77 92 71 70 90 85↙

Math: 72

C Languag: 73

English: 81

Total:75

程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自自的平均成绩并存放在v数组之中。退出外循环之后,把v[0]、v[1]、v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。

二维数组的初始化可以按行分段赋值,也可按行连续赋值。

例如对数组a[5][3],按行分段赋值可写为:

int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };

按行连续赋值可写为:

int a[5][3]={80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87, 90, 76, 77, 85};

这两种赋初值的结果是完全相同的。

【示例】求各科平均分和总成绩平均分。

#include

int main(){

int i, j; //二维数组下标

int sum=0; //当前科目的总成绩

int average; //总平均分

int v[3]; //各科平均分

int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };

for(i=0; i<3; i++){

for(j=0; j<5; j++){

sum+=a[j][i]; //计算当前科目的总成绩

}

v[i]=sum/5; // 当前科目的平均分14.

sum=0;

}

average =(v[0]+v[1]+v[2])/3;

printf("Math: %d

C Languag: %d

English: %d

", v[0], v[1],v[2]);

printf("Total:%d

", average);

return 0;

}

运行行结果:

Math: 72

C Languag: 73

English: 81

Total:75

对于二维数组初始化赋值还有以下说明:

1) 可以只对部分元素赋初值,未赋初值的元素自动取0值。例如:

int a[3][3]={{1},{2},{3}};

是对每一行行的第一列元素赋值,未赋值的元素取0值。 赋值后各元素的值为:

1 0 0

2 0 0

3 0 0

int a [3][3]={{0,1},{0,0,2},{3}};

赋值后的元素值为:

0 1 0

0 0 2

3 0 0

2) 如对全部元素赋初值,则第一维的长度可以不给出。例如:

int a[3][3]={1,2,3,4,5,6,7,8,9};

可以写为:

int a[][3]={1,2,3,4,5,6,7,8,9};

3) 数组是一一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。

如二维数组a[3][4],可分解为三个一维数组,其数组名分别为:a[0]、a[1]、a[2]。

对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一维数组a[0]的元素为a[0][0], a[0][1], a[0][2], a[0][3]。必须强调的是,a[0], a[1], a[2]不能当作下标变量使用用,它们是数组名,不是一个单纯的下标变量。

【C语言二维数组知识点介绍】相关文章:

c语言二维数组作用,C语言二维数组知识点介绍相关推荐

  1. c语言一维数组作用,c语言 一维数组 多维数组的理解

    数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言中,数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元素可 ...

  2. c语言的应用与作用,C语言主要应用在什么地方?

    C语言是一种计算机程序设计语言.它既有高级语言的特点,又具有汇编语言的特点.它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序.因此,它的应用范围 ...

  3. c语言(cn)括号的作用,c语言小括号的用法

    c语言小括号的用法 C语言的小括号里面表示一条语句,返回值是多条语句中最靠右的语句的返回值,比如(a=2,b=3,c=a+b),返回值就是c的值.下面小编就为大家介绍c语言小括号的用法. c语言小括号 ...

  4. c语言对编程对作用,c语言编程心得体会

    c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...

  5. c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等

    关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...

  6. c语言eof不起作用,c语言程序设计 怎么以输入EOF结束

    EOF(EndOfFile)是C语言中的文件结束标志符.当C语言输入函数获取到文件结尾标志时,会通过返回值的方式体现该值.所以要以输入EOF为结束,就需要判断输入函数的返回值.EOF定义在stdio. ...

  7. c语言链表head的作用,c语言链表的用法

    c语言链表的用法 链表是数据结构中比较基础也是比较重要的类型之一,那么有了数组,为什么我们还需要链表呢!或者说设计链表这种数据结构的初衷在哪里?下面小编就为大家介绍下c语言链表的用法. c语言枚举的用 ...

  8. c语言文件有什么作用,C语言文件的使用方法

    C语言文件的使用方法 C语言文件的使用方法:所谓"文件"是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名. 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件 ...

  9. c语言创建文件的作用,C语言文件与目录(一)

    注意包含头文件 #include #include 1.创建与删除目录 在Linux系统中,目录就是一个文件夹,文件可以存放在目录中.目录是一种特殊的文件,需要对目录设置权限. 创建目录函数mkdir ...

最新文章

  1. SAP UI5 应用开发教程之四十一 - Chrome 扩展 UI5 Inspector 的离线安装和使用方法
  2. SAP CRM呼叫中心的轮询设置CRMCMP_IC_FRAME SAM queue receiver
  3. 【OS学习笔记】十四 保护模式二:段描述符
  4. mac下nvm_mac中nvm的安装和使用
  5. 最新版的SSM框架spring5.0搭建教程(附源码)
  6. -----------简单排序-------------
  7. 【转载】JSON介绍
  8. java for 面试题_Java面试题整理
  9. 51Nod1253 Kundu and Tree 容斥原理
  10. SQL Server MYSQL 检查点的好处
  11. 30页不容错过的超赞项目管理PPT
  12. sqlserver 2008完整安装教程
  13. 一周学会linux实战 下载 pdf_UOS可用的pdf编辑工具
  14. Java中this关键字的用法
  15. hdb3编码规则波形_“10000101”所对应的HDB3编码波形是______。
  16. 代理服务器有问题怎么办?
  17. 必学技术java Swing之随心所欲添加自定义位置和大小的组件(建议收藏)
  18. idea的maven中出现target文件不完整或者“class not found“ 或 “test not fount“
  19. python怎样算入门_python初学者怎么入门
  20. 南理工计算机学院基础实验中心,数学实验教学中心

热门文章

  1. 菜鸟麒麟10操作系统达梦v8 命令行祥细步骤
  2. java对接阿里云实名认证接口
  3. dw打不开计算机丢失,电脑中dreamweaver软件无法打开的解决方法
  4. 养生视野·新知(一)
  5. mysql mediumint是什么类型_MySQL中数值类型中smallint、mediumint等区别是什么 - 晓雨网...
  6. 成都python培训比较好的机构-成都Python全栈培训
  7. Python-Django毕业设计贵港高铁站志愿者服务平台(程序+Lw)
  8. Mathematica画图函数命令大全
  9. 群狼调研开展出租车神秘顾客调查
  10. 用菲教切入下沉市场,51TALK会成为在线教育的拼多多吗?