c语言二维数组作用,C语言二维数组知识点介绍
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语言二维数组知识点介绍相关推荐
- c语言一维数组作用,c语言 一维数组 多维数组的理解
数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言中,数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元素可 ...
- c语言的应用与作用,C语言主要应用在什么地方?
C语言是一种计算机程序设计语言.它既有高级语言的特点,又具有汇编语言的特点.它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序.因此,它的应用范围 ...
- c语言(cn)括号的作用,c语言小括号的用法
c语言小括号的用法 C语言的小括号里面表示一条语句,返回值是多条语句中最靠右的语句的返回值,比如(a=2,b=3,c=a+b),返回值就是c的值.下面小编就为大家介绍c语言小括号的用法. c语言小括号 ...
- c语言对编程对作用,c语言编程心得体会
c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...
- c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等
关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...
- c语言eof不起作用,c语言程序设计 怎么以输入EOF结束
EOF(EndOfFile)是C语言中的文件结束标志符.当C语言输入函数获取到文件结尾标志时,会通过返回值的方式体现该值.所以要以输入EOF为结束,就需要判断输入函数的返回值.EOF定义在stdio. ...
- c语言链表head的作用,c语言链表的用法
c语言链表的用法 链表是数据结构中比较基础也是比较重要的类型之一,那么有了数组,为什么我们还需要链表呢!或者说设计链表这种数据结构的初衷在哪里?下面小编就为大家介绍下c语言链表的用法. c语言枚举的用 ...
- c语言文件有什么作用,C语言文件的使用方法
C语言文件的使用方法 C语言文件的使用方法:所谓"文件"是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名. 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件 ...
- c语言创建文件的作用,C语言文件与目录(一)
注意包含头文件 #include #include 1.创建与删除目录 在Linux系统中,目录就是一个文件夹,文件可以存放在目录中.目录是一种特殊的文件,需要对目录设置权限. 创建目录函数mkdir ...
最新文章
- SAP UI5 应用开发教程之四十一 - Chrome 扩展 UI5 Inspector 的离线安装和使用方法
- SAP CRM呼叫中心的轮询设置CRMCMP_IC_FRAME SAM queue receiver
- 【OS学习笔记】十四 保护模式二:段描述符
- mac下nvm_mac中nvm的安装和使用
- 最新版的SSM框架spring5.0搭建教程(附源码)
- -----------简单排序-------------
- 【转载】JSON介绍
- java for 面试题_Java面试题整理
- 51Nod1253 Kundu and Tree 容斥原理
- SQL Server MYSQL 检查点的好处
- 30页不容错过的超赞项目管理PPT
- sqlserver 2008完整安装教程
- 一周学会linux实战 下载 pdf_UOS可用的pdf编辑工具
- Java中this关键字的用法
- hdb3编码规则波形_“10000101”所对应的HDB3编码波形是______。
- 代理服务器有问题怎么办?
- 必学技术java Swing之随心所欲添加自定义位置和大小的组件(建议收藏)
- idea的maven中出现target文件不完整或者“class not found“ 或 “test not fount“
- python怎样算入门_python初学者怎么入门
- 南理工计算机学院基础实验中心,数学实验教学中心
热门文章
- 菜鸟麒麟10操作系统达梦v8 命令行祥细步骤
- java对接阿里云实名认证接口
- dw打不开计算机丢失,电脑中dreamweaver软件无法打开的解决方法
- 养生视野·新知(一)
- mysql mediumint是什么类型_MySQL中数值类型中smallint、mediumint等区别是什么 - 晓雨网...
- 成都python培训比较好的机构-成都Python全栈培训
- Python-Django毕业设计贵港高铁站志愿者服务平台(程序+Lw)
- Mathematica画图函数命令大全
- 群狼调研开展出租车神秘顾客调查
- 用菲教切入下沉市场,51TALK会成为在线教育的拼多多吗?