荆州C/C++语言培训班
荆州C/C++语言培训班
- 上课时段:见详情
- 教学点:1个
- 开班时间:随到随学
- 课程价格:请咨询
- 已关注:841
- 优惠价格:请咨询
- 咨询电话: 400-008-6280
荆州C/C++语言培训相关资料:
C++二维数组的定义和用法
二维数组的定义与初始化
在实际的工作中,仅仅使用一维数组是远远不够的,例如,一个学习小组有5个人,每个人有3门课的考试成绩,如果使用一维数组解决是很麻烦的。这时,可以使用二维数组,维数组的定义方式与一维数组类似,其语法格式如下:
类型说明符 数组名[常量表达式1] [常量表达式2];
在上述语法格式中,“常量表达式1”被称为行下标,“常量表达式2”被称为列下标。
例如,定义一个3行4列的二维数组,具体如下:
int a[3][4];
在上述定义的二维数组中,共包含3*4个元素,即12个元素。接下来,通过一张图来描述二维数组a的元素分布情况。
1588924115618_C++.jpg
从图中可以看出,二维数组a是按行进行存放的,先存放a行,再存放a[1行、a2行,并且每行有4个元素,也是依次存放的。
完成二维数组的定义后,需要对二维数组进行初始化,初始化二维数组的方式有4种,具体如下。
(1)按行给二维数组赋初值。例如:
int a[2][3] = {{1,2,3},{4,5,6}};
在上述代码中,等号后面有一对大括号,大括号中的第1对括号代表的是第1行的数组元素,第2对括号代表的是第2行的数组元素。
(2)将所有的数组元素按行顺序写在1个大括号内。例如
int a[2][3] = {1,2,3,4,5,6};
在上述代码中,二维数组a共有两行,每行有3个元素,其中,第1行的元素依次为1、2、3,第2行元素依次为4、5、6。
(3)对部分数组元素赋初值。例如:
int b[3][4] = {{1},{4,3},{2,1,2}};
在上述代码中,只为数组b中的部分元素进行了赋值,对于没有赋值的元素,系统会自动赋值为0,数组b中元素的存储方式如下所示。
1588924136474_C++-二维数组、.jpg
(4)如果对全部数组元素置初值,则二维数组的第1个下标可省略,但第2个下标不能省略。例如
int a[2][3] = {1,2,3,4,5,6};
可以写为
int a[][3] = {1,2,3,4,5,6};
系统会根据固定的列数,将后边的数值进行划分,自动将行数定为2。
二维数组的引用
二维数组的引用方式同一维数组的引用方式一样,也是通过数组名和下标的方式来引用数组元素,其语法格式如下:
数组名[下标] [下标];
在上述语法格式中,下标值应该在已定义的数组的大小范围内,例如,下面这种情况就是错误的。
int a[3][ 4]; //定义a为3行4列的二维数组
a[3][4]=3; //对数组a第3行第4列元素赋值,出错
在上述代码中,数组a可用的行下标范围是0~2,列下标是0~3,a[3][4]超出了数组的下标范围。为了帮助读者更好地掌握二维数组的引用,接下来,通过一个案例来演示二维数组的遍历。
#include<stdio.h>
void main() {
//申明并初始化数组
int array[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
for (int i = 0; i < 3; i++) //循环遍历
{
for (int j = 0; j < 4; j++) //循环遍历
{
printf("[%d][%d]: %d", i, j, array[i][j]);
}
printf("n"); //每行添加换行字符
}
}
运行结果如下
1588924165993_二维数组运行案例.jpg
在上图中定义了一个二维数组aray,该数组有3行4列。当使用嵌套for循环遍历二维数组元素时,外层for循环用于变量数组的行元素,内层for循环用于遍历数组的列元素。从图中可以看出,程序依次将数组aray中的元素输出了。
二维数组的应用
熟悉了二维数组的定义和引用,接下来定义一个二维数组 StuScore[5][3],用来存放5名同学3门课程的成绩,并定义变量m表示学生,n表示第几门成绩,aver表示每名同学3门课程的平均成绩,sum表示每名同学3门课的总成绩,具体如下案例所示:
#include<stdio.h>
void main(int argc, char *argv[])
{
int StuScore[5][3] = {
//张同学
{88, 70, 90},
//王同学
{80, 80, 60},
//李同学
{89, 60, 85},
//赵同学
{80, 75, 78},
//周同学
{70, 80, 80}
};
int m = 0, n = 0;
int nStuTotalScore = 0;
int nMathTotalScore = 0;
int nChineseTotalScore = 0;
int nEnglishToatalScore = 0;
printf("个人总成绩:n");
for (m = 0; m < 5; m++) {
nStuTotalScore = 0;
for (n = 0; n < 3; n++) {
nStuTotalScore += StuScore[m][n];
switch (n)
{
case 0:
{
nMathTotalScore += StuScore[m][n];
break;
}
case 1:
{
nChineseTotalScore += StuScore[m][1];
break;
}
case 2:
{
nEnglishToatalScore += StuScore[m][2];
}
}
}
switch (m)
{
case 0:
{
printf("张同学:%dn", nStuTotalScore);
break;
}
case 1:
{
printf("王同学:%dn", nStuTotalScore);
break;
}
case 2:
{
printf("李同学:%dn", nStuTotalScore);
break;
}
case 3:
{
printf("赵同学:%dn", nStuTotalScore);
break;
}
case 4:
{
printf("周同学:%dn", nStuTotalScore);
break;
}
}
}
printf("小组数学总分: %d 小组数学平均分:%.2fn",
nMathTotalScore, (double)nMathTotalScore / 5);
printf("小组语文学总分: %d 小组语文平均分:%.2fn",
nChineseTotalScore, (double)nChineseTotalScore / 5);
printf("小组英语总分: %d 小组英语平均分:%.2fn",
nEnglishToatalScore, (double)nEnglishToatalScore / 5);
}
C++ 开发语言,主导编程世界的地位
C语言属于高级语言,具有可移植性,面向过程的,贴近底层、运行速度快
1、应用广泛
C++ 语言广泛的用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域,是世界上使用最广泛的编程语言之一
80%大型网络游戏 由C++编程语言开发 | 大部分基础软件是由 C++编程语言开发 | 90%以上桌面系统 都是由C++语言编写 | C/C++ 技术在网络通信 方面应用巨大 |
2、稳居前列
据世界权威语言排行榜(TIOBE)的最新数据显示(2019 年 3 月),C和C++ 语言已分别名列排行榜的第二和第四的位置。 |
C++ 软件人才稀缺,职业发展前景广
C++软件工程师在企业需求中呈上升趋势,人才需求发展处于坚挺状态
可从事行业:算法实现 网络安全 物联网 图形 / 视频 / 多媒体处理 底层数据处理 区块链 负载均衡 反向代理 |
19年迭代,课程源自企业需求,紧跟时代
达内每一期课程大纲,由研发组结合热点技术与企业需求不断完善
课程内容: • 计算机概述 • 标准 C 基础语法 • 数据结构和算法 学习目标 计算机概述,Linux Eclipse 开发环境搭建 基本数据类型,流程控制,数组 俄罗斯方块 各种存储结构优劣对比,排序算法优劣对比 | ||||
课程内容 • Linux 文件系统 • Linux 内存管理 • Linux 进程管理 • Linux 线程管理 • 网络通讯开发 学习目标 掌握文件的打开与关闭、文件的读写、系统与标准I/O 掌握子进程创建、进程间通讯、信号捕获和处理 掌握线程创建、线程同步技术 | ||||
课程内容 • C++ 基础 • OOP • 异常和 IO 流 • QT 开源框架库 • C++ 模板 • STL 标准模板库 • MySQL 学习目标 熟悉名字空间、各种数据类型的操作 熟练掌握C++ 各种异常情况处理,输入输出流操作 掌握QT 开源框架库的使用 了解C++ 泛化数据类型技术原理和实现 掌握STL 十大容器使用 | ||||
课程内容 • Windows 编程基础 • Windows 窗口 • Windows 线程管理 • MFC 框架总揽 • 视图架构 • MFC 序列化 • MFC 网络通讯 • ADO 接口 学习目标 掌握窗口的注册、窗口的创建、消息机制、资源的使用 了解MFC 的概述、程序启动机制、窗口创建机制 掌握文件操作、永久保存机制 掌握ADO 接口访问数据库技术 | ||||
课程内容 • 网络安全概述 • 网络协议栈 • 密钥 • 内核加固 • 网络诱骗 • 防火墙 • 垃圾邮件过滤 • 恶意代码检测 • 嗅探器 学习目标 网络安全开发编码原理和切入点的剖析 对称秘钥、公钥秘钥的原理解析 针对木马攻击程序的反响渗透和注入技术 防火墙技术工作原理解析 各种抓包工具工作原理 |
多领域项目实战,助你职位发展先人一步
项目落地+重构,助你不仅能编程-更精编程
阶段项目一 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
HTTP服务器 WebServes Web服务器可以解析客户端发来HTTP协议,根据用户请求,给予响应数据(静态网页,图片或动态页面)。 | |
阶段项目二 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
网络爬虫 WebCrawler 搜索引擎的信息源自互联网,通过“网络爬虫”将整个“互联网”的海量信息获取到本地.(搜索引擎的入口) | |
阶段项目三 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
电信计费系统 DMS 电信部门针对电信用户登录信息进行采集,分析,传输,存储,以此作为对电信用户资费的依据。 | |
阶段项目四 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
远程监控 Remote Control 取消远程机所有的输入控制功能,实现本地机监视并控制远程机的所有输入输出操作。 |
扫描二维码免费领取试听课程
登录51乐学网
注册51乐学网