网站首页 > 技术文章 正文
理解一维数组的精髓,二维数组更容易掌握了。
先来复习一维数组程序应用,请填空统计全班某门功课的平均分数和最高分数 (设全班55人)。
问题分析:求全班某门课的平均分和最高分
模式识别:平均分为累加求和,再除以人数即可。求最高分可用“打擂台”方法求最大值。
模式归纳:用数组表示全班成绩,用循环求平均分和采用打擂台算法求最高分。用printf语句输出结果。
程序实现:
# define N 55
main()
{ int i,sum=0,max,score[N];
float average;
printf(“input everyone’s score:\n”);
for( _____________;_________;_________ )
scanf(“%d”,__________);
for(______;______;_______ )
{sum+=_______;
if(score[i]>max) max=________;}
average=_________;
printf(“average=%f\n”,average);
printf(“max=%d\n”,max);
}
答案:
在处理有些问题时需要用到二维数组来处理。例如,有4个小分队,每队有5名队员,要把这些队员的游泳成绩用数组保存起来,这就需要用到二维数组,如图。如果建立一个数组score,它应当是二维的,第一维用来表示第几分队,第二维用来表示第几个队员。如score2,3表示2分队队员3的成绩,她的值是87.
队员1 | 队员2 | 队员3 | 队员4 | 队员5 | |
1分队 | 87 | 75 | 93 | 82 | 89 |
2分队 | 91 | 84 | 87 | 92 | 90 |
3分队 | 76 | 79 | 84 | 88 | 80 |
4分队 | 91 | 95 | 92 | 83 | 85 |
一、怎样定义二维数组
(一)二维数组的定义
二维数组定义基本概念与方法和一维数组相似,一般形式为:
类型符 数组名[常量表达式][常量表达式];
如int a[3][4],b[4][M];(M为符号常量)
定义a为3*4(3行4列)的整型数组
b为4*M(4行M列)的整型数组
C语言对二维数组采用这样的定义方式,是的二维数组可被看作一种特殊的一维数组:她的元素又是一个一维数组。例如,可把a看作一种特殊的一维数组,它有3个元素:a[0],a[1],a[2]
每个元素又是一个包含4个元素的一维数组,如图:
可以把a[0],a[1],a[2]看作一维数组名。上面定义的二维数组可以理解为定义了三个一维数组,即相当于:
Int a[0][4],a[1][4],a[2][4];
此处把a[0],a[1],a[2]看作一维数组名。C语言用这种处理方法在数组初始化和用指针表示时显得很方便,这在以后会体会到。
(二)二维数组的存储
C语言中,二维数组中元素排列的顺序是按行存放的,记载内存总顺序存放第1行的元素,接着在存放第2行的元素。
如 int a[3][2];a[3][2]中的元素在内存中按行连续排放,如图.
注意:二维数组在逻辑上,有行列关系。但在内存中,各个元素是连续存放的,是线性的,而非二维的。这点务必请明确。
二、怎样引用二维数组的元素
同一维数组,二维数组的表示形式为:
数组名[下标][下标]
下标应是整型表达式。
如:int a[2][4];
二维数组下标的有效范围同一维数组,均从0开始,最大值为定义时下标减1。
如a数组元素的下标下限值是a[0][0],上限值是a[1][3]。这点要特别注意。
数组元素也可以出现在表达式中,也可以被赋值,例如:
b[1][2]=a[1][3]/2;
三、二维数组的初始化
可用“初始化列表”对二维数组初始化。如果不给二维数组初始化,则系统默认二维数组各元素为0.
- 上一篇: C 数组(Array)(C 数组大小)
- 下一篇: C语言里面的数组(c语言里的数组是什么意思)
猜你喜欢
- 2024-09-21 你完全掌握了C语言数据类型——数组了吗?带你了解二维数组!
- 2024-09-21 C语言结构体,如何定义结构体数组?linux C第62讲
- 2024-09-21 C语言 一维数组的定义和使用(c语言中的一维数组的定义)
- 2024-09-21 「初识C语言」二维数组(c语言二维数组写法)
- 2024-09-21 【C语言】(4)数组(c语言中数组的用法)
- 2024-09-21 【C语言】数组(c语言数组和指针的关系)
- 2024-09-21 一文解读清楚C语言动态数组(c语言如何使用动态数组)
- 2024-09-21 C/C++编程知识分享:C++ 手把手教你实现可变长的数组
- 2024-09-21 什么是 Python 中的数组,它与列表有何不同?
- 2024-09-21 C语言系列_4:一文让你明白C语言数组
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 568℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 509℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 466℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 446℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 443℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)