本书面向C语言程序设计初学者,共11章。本书内容既传承传统,介绍C语言的语法、数据类型、变量、表达式、控制结构、结构体、数组、函数、指针、文件等C语言程序设计的经典知识;又与时俱进,涵盖鸿蒙操作系统、虚拟机管理、C语言程序设计开发环境、交叉编译环境、嵌入式程序设计、数字电路、计算机控制等专业内容;还拥抱未来,包含大量基于鸿蒙操作系统的智能物联设备开发案例,以培养信创智能物联开发技能人才。
本书既可以作为高等院校本科学生C语言程序设计课程的教材,也可以作为教师、自学者的参考用书,同时也可供各类软件开发设计人员学习参考。
u本书面向C语言程序设计的初学者,不但包含传统C语言程序设计教学内容,而且包含鸿蒙OS C语言设备开发的内容。既对C语言的知识难点配以简明直观的示意图予以诠释,易于读者对C语言的理解和掌握;又通过鸿蒙OS C语言设备案例,使得C语言程序设计课程的学习妙趣横生。
u本书面向国产鸿蒙OS C语言设备开发,配有配套的教学实验设备和系列实验,融合多方面知识内容,将C语言基础知识和鸿蒙OS C语言设备开发实验巧妙配合,使读者不但学会传统的C语言程序设计知识,而且学习、培养和具备了智慧物联时代行业亟需的程序设计专业技能。
u本书面向各级各类C语言程序设计技能竞赛和计算机创新创业大赛、重视程序设计的趣味性和程序设计的综合能力培养,告别传统C语言教学枯燥的命令行程序界面,拥抱更有趣味的嵌入式实验,内容深入浅出、语言通俗易懂、图文并茂、案例驱动,既适合初学者入门,也适合作为进阶学习的重要参考资料。
C语言是从诞生至今经久不衰的一门编程语言。从适用性的角度看,C语言是一种既可以编写单片机程序和系统软件又可以编写互联网应用的程序设计语言。一些面向对象的程序设计语言,如C 、ObjectC、Java、C#、JavaScript等,都遵循C语言的大部分语法,形成了一个计算机语言家族C语言家族。 从教学的角度看,学生学会C语言以后,对于C 、Java等语言就可以快速掌握。所以,C语言程序设计一直是计算机科学与技术及相关专业学生的必修课程。
作者从事C语言程序设计课程的教学多年,希望能把C语言这门课变得既浅显易懂又妙趣横生,所以将C语言程序设计与单片机嵌入式系统开发结合无疑是一个很好的方案。混沌初开,鸿蒙出世,恰逢鸿蒙操作系统4.0发布,为了顺应操作系统国产化的趋势和信创人才培养的潮流,作者编写了这部依托鸿蒙OS介绍C语言程序设计的教材。
有关C语言程序设计的教材成百上千。本书既传承传统又与时俱进,既包罗万象又融会贯通,既专业经典又通俗易懂,有独到之处。
所谓传承传统,是指本书包含了传统C语言程序设计教材应有的教学内容;所谓与时俱进,是指本书紧跟国产鸿蒙操作系统发展的步伐,不但讲解C语言程序设计的基础知识,而且传授鸿蒙操作系统C语言设备开发专业技能,紧随信创人才培养的时代脉搏。
所谓既包罗万象又融会贯通,是指本书不像一般的C语言程序设计教材那样仅包含C语言程序设计方面的知识,而是在此基础上还引入了鸿蒙操作系统、Linux 操作系统、虚拟机及其管理、数字电路、嵌入式程序设计、交叉编译、计算机网络、计算机控制等方面的知识,而且这些知识不是孤立的,而是相互联系、相互融合、相辅相成的。计算机及相关专业的学生通过对本书的学习,基本上能够对计算机领域重要的核心知识有感性、直观的了解,这对于后续的操作系统、数字电路、嵌入式程序设计、计算机控制等专业课程的学习会起到促进理解、融会贯通的作用。
所谓既专业经典又通俗易懂,是指本书提供了专业的、经典的知识内容,在内容编排上,既有基础的C语言知识,又有经典的算法、设备控制、数据采集、跨操作系统平台程序设计开发等内容,同时所有的知识和内容都用通俗易懂的语言、简洁直观的图示予以阐述,使初学者可以跟随本书一步步学会所有的知识,完成所有的实验。即使对计算机程序设计一无所知的小白,通过本书的学习也可以成为C语言程序设计和嵌入式系统开发的行家里手。
与传统的C语言程序设计教材相比,本书有配套的鸿蒙操作系统C语言设备程序开发实验板,既可以极大地提升学习者的学习兴趣,又有利于学习者理解和掌握计算机专业核心知识。
本书共11章,各章内容如下:
第1章主要包括计算机程序设计语言的基本概念、C语言及其发展简史、C语言程序设计开发环境及开发工具等内容。
第2章主要包括C语言源程序的基本结构、基本语法成分、基本数据类型与表达式、数据类型转换以及相应的开发实验等内容。
第3章主要包括鸿蒙操作系统、虚拟机、鸿蒙OS C语言设备程序开发编译环境以及相应的开发实验等内容。
第4章主要包括顺序、选择、循环3种程序控制结构以及相应的开发实验等内容。
第5章主要包括函数、局部变量、全局变量、动态存储、静态存储以及相应的开发实验等内容。
第6章主要包括指针的概念、定义和应用以及相应的开发实验等内容。
第7章主要包括一维数组和二维数组的概念、定义和应用以及相应的开发实验等内容。
第8章主要包括字符串、标准的字符串函数以及相应的开发实验等内容。
第9章主要包括结构体、结构体指针、函数指针、枚举、共用体以及相应的开发实验等内容。
第10章主要包括文件包含、宏定义、条件编译以及相应的开发实验等内容。
第11章主要讲述stdio.h头文件、文件类型、文件的打开和关闭以及读写等内容。
本书具备如下4个特色:
(1) 本书采用图文结合的方式对于难以理解的专业知识给予通俗易懂的诠释,让初学者可以做到无师自通。本书面向程序设计语言的初学者,对每一个操作步骤和操作方法都力求讲解详尽,保证初学者可以理解内容,一步步引导初学者完成程序设计实验。作者不但教学经验丰富,而且有多年的C语言程序设计实战经验,既了解C语言程序设计的难点和重点,又深谙程序设计人员的C语言程序设计知识和技能,这使得本书既传授知识,又传授技能,使初学者做到一书在手、编程无忧。
(2) 国产鸿蒙OS C语言设备程序开发贯穿本书始终。卡脖子的现状和国家的自主创新的决心使行业急需大量国产系统开发人员。本书针对高校编程类基础课程缺乏国产操作系统设备程序开发教材的现状而编写,根据知识的依赖关系精心设计了鸿蒙OS C语言设备程序开发系列实验,以保证C语言基础知识和鸿蒙OS C语言设备程序开发实验的良好衔接,使初学者既学习了传统的C语言程序设计知识,又掌握了物联网时代急需的程序设计专业技能。
(3) 本书重视程序设计的趣味性和综合能力培养,告别传统C语言教学枯燥的命令行界面程序,引入更有趣味的嵌入式实验,让初学者真切地感受到程序设计语言对现实世界产生的影响。有趣的实验能够带来更好的学习效果。
(4) 本书注重理论与实践的结合,着重案例驱动知识的学习,面向各级各类C语言程序设计技能竞赛和创新创业大赛。书中包含了大量的程序设计和设备程序开发案例、习题,可以让初学者做到活学活用、融会贯通。
本书配有电子教案及相关教学资源,采用本书作为教材的教师可从清华大学出版社官方网站下载。
虽然作者在本书中投入了大量的心血,然而限于水平,书中难免有不足之处,请各位专家和读者不吝指正。
作者2023年12月
第1章概述1
1.1计算机程序设计语言1
1.1.1机器语言2
1.1.2汇编语言3
1.1.3高级语言3
1.2C语言简介4
1.2.1C语言发展简史4
1.2.2C语言的标准化4
1.2.3C语言及其特点5
1.3C语言程序开发环境5
1.4C语言程序开发工具6
1.5DevC 的下载与安装8
1.6DevC 开发C语言程序的方法与步骤14
1.7习题28
第2章C语言的基础知识29
2.1初识C语言程序29
2.2C语言的基本语法成分33
2.2.1C语言的字符集33
2.2.2C语言的语法要素33
2.3数据类型的转换51
2.4C语言的功能52
2.5鸿蒙OS C语言设备开发实验: Hello HarmonyOS53
2.5.1下载本实验所用的软件和文件54
2.5.2安装USB接口转串口驱动程序、烧录软件和串口
调试器软件54
2.5.3编辑hello.c程序源代码54
2.5.4准备鸿蒙OS C语言设备开发网页编译环境56
2.5.5使用编译网页编译HarmonyOS程序源代码622.5.6将目标代码烧录到开发实验板中65
2.5.7使用串口调试器查看目标代码的执行结果69
2.5.8本实验串口通信工作原理70
2.6习题71
〖3〗鸿蒙OS C语言程序设计(微课版)目录〖3〗第3章鸿蒙OS C语言设备开发基础74
3.1鸿蒙OS简介74
3.1.1鸿蒙OS的发展历史74
3.1.2鸿蒙OS的设计理念75
3.1.3鸿蒙OS的技术架构75
3.1.4鸿蒙OS的技术特点77
3.1.5鸿蒙OS的应用场景79
3.2鸿蒙OS C语言设备开发实验板79
3.3鸿蒙OS C语言设备开发环境82
3.3.1鸿蒙OS C语言设备开发硬件环境83
3.3.2鸿蒙OS C语言设备开发软件环境83
3.4安装配置鸿蒙OS C语言设备开发的编译环境84
3.4.1安装虚拟机管理软件VMware Workstation85
3.4.2使用VMware Workstation创建Linux虚拟机90
3.4.3配置虚拟机操作系统环境并安装工具软件104
3.4.4安装编译环境构建工具HUAWEI DevEco Device Tool117
3.5安装Windows工作台鸿蒙OS C语言设备开发环境123
3.5.1安装DevEco Device Tool、Visual Studio Code和Python124
3.5.2在Visual Studio Code中安装配置中文环境131
3.5.3在Visual Studio Code中安装SSH插件133
3.5.4在Visual Studio Code中新建鸿蒙OS C语言设备开发工程144
3.6虚拟机及鸿蒙OS C语言设备开发编译环境的镜像文件制作及还原158
3.6.1制作虚拟机及鸿蒙OS C语言设备开发编译环境的镜像文件159
3.6.2使用镜像文件安装生成虚拟机及鸿蒙OS C语言设备开发
编译环境161
3.7安装配置鸿蒙OS C语言可执行程序烧录软件164
3.7.1安装USB接口转串口驱动程序165
3.7.2烧录软件HiBurn的安装166
3.8将虚拟机文件夹映射为Windows工作台的磁盘168
3.9鸿蒙OS C语言设备开发实验: 点亮一只LED灯171
3.9.1鸿蒙OS C语言设备开发方法171
3.9.2鸿蒙OS C语言程序项目结构和内容172
3.9.3点亮一只LED灯项目的开发步骤176
3.9.4点亮一只LED灯实验工作原理207
3.10习题208
第4章C语言的控制结构210
4.1顺序结构210
4.2选择结构211
4.2.1if语句211
4.2.2if语句的嵌套218
4.2.3条件表达式218
4.2.4switch语句219
4.3循环结构221
4.3.1while循环221
4.3.2dowhile循环222
4.3.3for循环223
4.3.4多重循环226
4.4其他控制语句229
4.5循环结构典型算法程序举例231
4.6结构化程序设计232
4.7鸿蒙OS C语言设备开发实验: 闪烁的LED灯233
4.7.1闪烁的LED灯项目的结构和内容233
4.7.2闪烁的LED灯实验过程234
4.7.3闪烁的LED灯实验工作原理235
4.8鸿蒙OS C语言设备开发实验: 呼吸灯236
4.8.1呼吸灯实验程序源码236
4.8.2呼吸灯实验过程238
4.8.3呼吸灯实验工作原理238
4.9习题239
第5章C语言的函数245
5.1函数245
5.2C语言的局部变量和全局变量248
5.3C语言变量的静态存储和动态存储252
5.4C语言程序在内存中的存储结构254
5.5鸿蒙OS C语言设备开发实验: 跑马灯256
5.5.1跑马灯实验程序源码256
5.5.2跑马灯实验过程258
5.5.3跑马灯实验工作原理258
5.6习题259
第6章指针264
6.1初识指针264
6.2两个数交换267
6.3数据输入和输出273
6.4使用指针的利与弊276
6.5读取字符277
6.6鸿蒙OS C语言设备开发实验: 读取按钮状态278
6.6.1读取按钮状态实验设备278
6.6.2读取按钮状态实验程序源码279
6.6.3读取按钮状态实验工作原理280
6.7鸿蒙OS C语言设备开发实验: 电子秤281
6.7.1电子秤实验设备281
6.7.2电子秤实验程序源码282
6.7.3电子秤实验工作原理283
6.8习题285
第7章数组289
7.1一维数组290
7.1.1一维数组的定义和使用290
7.1.2计算数组元素的均值292
7.1.3利用指针计算数组元素均值296
7.1.4均值滤波算法297
7.1.5有序数组插入算法300
7.1.6求最小值算法302
7.1.7选择排序算法303
7.2二维数组304
7.2.1二维数组的定义304
7.2.2二维数组的使用306
7.2.3二维数组求和案例307
7.2.4矩阵相加案例309
7.3动态内存311
7.3.1动态内存分配311
7.3.2基于动态内存分配的矩阵312
7.4鸿蒙OS C语言设备开发实验: 点阵显示315
7.4.1点阵显示实验设备及工作原理315
7.4.2点阵显示实验程序源码318
7.4.3点阵显示实验程序源码解析319
7.5习题321
第8章字符串323
8.1字符串长度计算算法324
8.2字符串逆序算法326
8.3字符串复制算法327
8.4C语言的标准字符串函数329
8.5鸿蒙OS C语言设备开发实验: 点阵显示字母330
8.5.1点阵显示字母实验工作原理330
8.5.2点阵显示字母实验程序源码330
8.5.3点阵显示字母实验程序源码解析333
8.6习题334
第9章结构体、枚举和共用体336
9.1什么是结构体336
9.2结构体的使用337
9.2.1使用结构体变量存储平面上点的坐标337
9.2.2使用结构体变量计算平面上两个点的距离338
9.3类型定义关键字typedef340
9.4结构体指针及其应用341
9.5函数指针及其应用343
9.6枚举347
9.6.1什么是枚举347
9.6.2枚举案例: 迷宫寻路349
9.7共用体353
9.8鸿蒙OS C语言设备开发实验: 四位七段数码管355
9.8.1四位七段数码管实验设备及其工作原理355
9.8.2四位七段数码管实验程序源码357
9.8.3四位七段数码管实验程序源码解析366
9.9习题366
第10章预处理与头文件369
10.1文件包含指令#include369
10.1.1#include指令的常规用法371
10.1.2stdlib.h头文件380
10.2宏定义指令#define386
10.2.1#define的应用386
10.2.2宏函数387
10.3条件编译指令#ifdef388
10.4鸿蒙OS C语言设备开发实验: 简单直流电动机390
10.4.1简单直流电动机实验设备及工作原理390
10.4.2简单直流电动机旋转实验391
10.4.3简单直流电动机正转、反转实验393
10.4.4简单直流电动机调速实验395
10.5鸿蒙OS C语言设备开发实验: 步进电动机398
10.5.1步进电动机实验设备及工作原理398
10.5.2步进电动机实验程序源码399
10.5.3步进电动机实验程序源码解析402
10.6习题402
第11章文件404
11.1stdio.h头文件404
11.2文件类型406
11.3文件的打开与关闭407
11.3.1流407
11.3.2文件指针407
11.3.3文件的打开与关闭408
11.4文本文件的写和读410
11.4.1写文本文件410
11.4.2读文本文件412
11.5二进制文件的读和写415
11.5.1读二进制文件415
11.5.2写二进制文件417
11.6文件的随机读写419
11.7习题420
附录AC 关键字423
附录BC 运算符424
附录CC/C 常用库函数425
C.1常用数学函数425
C.2常用字符串处理函数426
C.3其他常用函数427
附录DASCII码表428
参考文献429