北京理工大学

C语言程序设计(下)

图片
课程概述

欢迎大家进入C语言程序设计第二部分的学习。

相信大家已经掌握了C语言的基本语法,学会用三种基本结构编写程序,能够解决一般的数值处理问题、穷举问题等。 就如同学习汉语,大家已经学习了字、组词、造句,能够写短文了,接下来是怎样写长文章?对应C语言来说,我们如何设计较长的程序?如何解决相对复杂的问题?如何重复使用某一段代码?

有人说编程是艺术,用C就可以写出很“美“的代码。例如如果我们不用循环结构,不用递归算法,能不能在屏幕上输出从1到1000?学完这部分,大家就可以试试啦。

    C语言的基本结构是函数,其基本含义是:一个软件可以由多个源程序(文件)组成;一个源程序(文件)可以由多个函数组成;函数就是一段具有某种功能的程序,除主函数之外,用户写的这段程序叫做用户定义函数,由函数名,参数,说明语句和执行语句构成。定义后的函数可以重复被主函数或其他函数调用。所以说,函数是实现模块化设计的基础。

更为神奇的是,如果我们把函数的组成部分细化,列出一个树状的结构,你会发现你学过的C语言的基础知识内容都在里面啦,学过函数后,你也可以试试啊。

怎么使用函数呢?函数的递归调用是难点,要掌握编写递归算法的关键,通过典型的递归问题掌握编写递归程序的技巧;其次要将前面各章中的一些题目用递归算法实现,通过对比分析,加深对递归的理解和掌握。

接下来,我们学习指针。指针是C语音的特色,也是C语言中最灵活的地方。

如何学习指针呢? C语言中指针就是地址。大家要掌握指向变量的指针,指向数组的指针,指向函数的指针,指向指针的指针,指针数组等。注意从定义和引用的形式上区分不同功能的指针,要理解指针与数组的关系,以及定义了指针之后,如何引用变量的值等具体问题,

结构、联合与枚举都是C语言中的构造数据类型,是基本数据类型的某种组合。

 链表是指针、结构体的高级应用,也是C语言各阶段语法知识的综合体现。链表就是动态的数据结构。要掌握链表如何定义,如何建立简单的单向链表,以及学会编写链表中节点的插入、删除等基本操作。在上述知识和练习基础上,练习编写小软件,例如:学生档案管理系统等。

以往程序中对数据的操作均在内存上实现,随着程序运行的结束,变量的内存空间和变量的值均消失。C语言中可以利用文件实现数据在外存上的存取操作。

首先要掌握文件的基本概念,其中重要的是文件型指针,文件通过文件指针操作。要学会使用文件读写函数,分别实现文件的按字符读写、按字符串读写、按数据块读写和按格式读写;还有文件当前状态的测试函数等,必须熟练使用这些函数。




授课目标
通过学习该课程,学习者将具备基本的程序设计能力。
证书要求

通过视频学习,完成测试和作业,达到课程要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。总成绩由各分项成绩汇总后评定,见下表:

考核

成绩

作业和测验

50/100

考试

50/100

6084分:合格证书
85100分:优秀证书



预备知识

本课程需要先学习《C语言程序设计(上)》,掌握基本的程序设计结构(顺序、选择、循环)和数组的知识,同时建议自学一些简单的信息在计算机中的表达和计算机硬件基本结构的相关知识。

授课大纲

第1周 函数(一) 

11 函数定义

介绍函数的基本概念,定义形式,应用实例。

12 模块化程序设计

介绍模块化程序设计的思想。

13 函数调用、声明和返回

介绍主调函数与被调函数之间的调用形式、主调函数对被调函数的声明、函数的返回值的特点和返回语句。

14 函数间参数传递

主调函数与被调函数之间参数传递的几种方式,强调形参的特点和数组做函数参数这种形式的特点。

第2周 函数(二)

21 函数递归调用

介绍递归的概念和一些递归程序的实例。

第3周 函数(三)

31 变量存储属性

介绍变量存储属性的种类和特点,和工程文件的概念及定义。

32 编译预处理

介绍C中几种预处理命令和使用要求。主要是宏定义和文件包含。

第4 指针(一) 

41 指针的定义、初始化和引用

首先介绍指针的概念,然后介绍指向变量的指针的定义、初始化和引用方式,介绍使用指针变量尤其是做函数参数的一些典型应用实例。

42 指针与数组

通过指针访问一维数组中的元素的方式,重点介绍字符指针的应用。

第5 指针(二)

51 指针运算

介绍当指针指向数组时指针的运算规则。

52 指针数组

介绍指针数组的定义,赋值和引用,通过例题介绍指针数组、二维数组的关系。

第6 指针(三)

61 指针与函数

介绍指向函数的指针的定义和引用,以及通过指针调用函数的应用实例。

62 指针与指针

介绍二级指针的定义、赋值和应用。

以上内容通过应用实例,综合掌握指针的应用。

7 链表(一)

71 结构的概念

介绍结构的基本概念,结构说明及其应用。

72 结构数组

介绍结构数组的定义与访问。

73 结构指针

介绍结构指针及其应用。

74 结构与函数

介绍结构与函数的关系,结构在函数参数传递中的应用。

75 联合

介绍联合的概念,强调与结构的异同。

8 链表(二)

81 typedef自定义类型

介绍Typedef自定义类型的概念及其应用。

82 枚举类型

介绍枚举类型的概念。

83 链表的概念

介绍链表的基本概念,分析其与数组结构的关系,介绍其主要功能

84 链表的基本操作

介绍内存的申请与释放,链表的创建、插入、删除等操作

9 文件

91 文件概述

介绍数据管理的基本形式及文件的分类。

92 文件型指针

介绍文件指针的基本概念。

93 文件的打开与关闭

介绍文件的打开与关闭操作及其原理。

94 文件的顺序读写

介绍介绍文件顺序读写的基本函数及其应用。

95 文件的随机读写

介绍文件随机读写的方法。

96 文件检测

介绍文件状态、检测方法。

97 文件应用实例

介绍文件的综合应用技巧。

10 总结与练习 

101 C语言知识总结

总结C语言的主要知识点和重点,常见的问题和错误分析。

102 C语言练习

典型的算法复习与综合练习。

参考资料

1.参考教材
    《C语言程序设计教程》(第三版)
    北京理工大学出版社  李凤霞等编


    《C语言程序设计教程习题与上机指导》
    北京理工大学出版社  王树武等编


    其他的C语言的教材也可以参考
2.相关链接:
    爱课程国家精品资源共享课‍
    http://www.icourses.cn/coursestatic/course_3313.html


常见问题

Q:学习过程中可能出现的问题有哪些?
A:注重理论学习,忽视上机编程实践;入门时以为难度大,产生畏难情绪;太注重学习语句的语法规则,忽视了对编程思路和方法的训练;急于求成,总想编写综合性的程序,忽视基本概念,忽视基本功的训练。
Q:学好C语言的关键是什么?
A:上机编程是学好C语言的关键,多上机,多练习,提高动手能力。
Q:整个学习过程是什么样的?
A:整个学习过程分为两个阶段。初级阶段:重点掌握C语言的语法;从模仿起步;必要的记忆;养成良好的编程习惯;掌握上机编写程序的方法;熟练掌握程序调试方法。中级阶段:重点掌握编程思路和基本算法;学会分析问题;开始进行算法设计。
Q:编程需要什么样的操作系统和编程工具?
A:微软Windows系列,苹果 OS X系列,各种版本的Linux都可以作为练习C语言的操作系统, DEV-C++, MS Visual Studio、C-Free等都可以作为练习C语言的编程工具。课程演示将使用DEV-C++。