课程概述

程序设计是理工类专业学生必须掌握的技能之一,而C语言又因在科学计算和信息处理等方面具有简洁、高效等优点被广泛使用。所以,《C语言程序设计》是所有理工类专业学习必修的一门很重要的公共基础课,也是后续专业课程的重要基础。学生学习后应掌握熟练地使用开发环境进行程序设计和调试,能够利用C语言解决简单的实际问题,为后续课程打下一定的基础。

 

证书要求

平时成绩由慕课学习情况、测验与作业等决定,占总成绩的30%。

期末考试占总成绩的70%

预备知识

大学计算机基础或计算机导论课程,尤其是其中编码、内存、算法及程序设计方法等章节的内容。

授课大纲

(一)C语言概述

1.了解C语言的历史、发展现状和C语言的特点及功能。

2.掌握简单C程序的组成。理解注释、编译预处理命令、语句等概念,掌握输出函数的用法。

3. 掌握VC编程环境,以及C程序的编程步骤及上机步骤。了解VC之外的其它环境。(要求学生必须在个人电脑上完成至少一种编程环境的安装和使用)。

4. 了解本课程要求、学习方法和考核方式。

 

 

实验一  VC环境及简单C程序

 

(二)顺序结构程序设计

1.掌握常见的三种数据类型,以及三种数据类型的编码原理。理解标识符、变量与常量的概念及表示方法,掌握变量定义的方法和内存分配情况。

2.掌握常用运算符和表达式的写法。了解类型溢出和舍入误差的概念。理解运算符的优先级与结合性等概念,掌握表达式的计算过程。

3.掌握不同类型(char、float(double)、int)数据间的混合运算规则,强制类型转换和自动类型转换规则。

4.理解语法错误与逻辑错误的概念,掌握C程序的调试方法。

5.掌握三种基本类型的输入/出方法,尤其是printf()/ scanf(),getchar()/putchar()等函数的具体使用方法。

6.掌握常用数学函数的用法,并了解其它C库函数的用法。

7.自学算法及其表示方法,掌握三种基本结构的算法描述方法。

(注:本部分与语法相关的知识点比较琐碎,教师一定要结合例题讲解)

 

实验二  顺序结构程序设计

 

(三)选择结构程序设计

1.理解算法的概念及其表示方法,掌握三种基本结构的算法描述方法。

2.掌握if-else语句的用法,以及选择结构程序的调试方法和简单的程序测试方法。

3.掌握关系运算符和逻辑运行符及其表达式的写法,理解关系表达式和逻辑表达式的计算过程和结果表示。

4.了解数据合法性检查方法,了解程序测试的基本方法,学会选择测试用例。

5.掌握多分支结构程序设计,掌握switch语句的用法,理解用switch语句和用if-else嵌套解决多分支结构的区别。

 

实验三  选择结构程序设计

 

(四)循环结构程序设计

1.掌握简单循环程序设计,主要是三种循环语句while,do-while,for语句的写法。结合上机,理解循环结构程序的运行过程。了解for语句,以及与while语句的对应关系。

2.理解break,continue语句的含义和用法。

3.理解循环嵌套的概念以及程序的运行过程。掌握复杂循环程序设计。

4.掌握常见算法:穷举法和迭代法。

(本部分是本课程的重点及难点,教师应从读程序题目开始,让学生掌握基本的语法和循环结构程序的运行过程,然后通过更多的编程练习,让学生进行循环结构的程序设计。)

 

实验四  循环结构编程

 

(五)函数

1.了解模块化和分而治之的思想,了解模块化的必要性。

2.理解函数定义、函数调用和函数原型(函数声明)的相关概念,学会通过调试工具观察函数调用的过程,理解形参与实参的对应关系、参数传递过程及函数返回过程。掌握函数定义、函数调用和函数原型(函数声明)的语法。

2.了解模块划分原则,掌握多函数程序设计。

3.结合调试工具,理解内部变量、全局变量,以及static变量的概念,以及它们的特点及适用条件。

3.理解嵌套调用的过程。

4.理解递归调用过程,掌握递归函数的特点和定义方法。理解递归法和抚迭代法的区别。

5.理解带参数的宏定义,以及其与函数的区别。

6.了解C库函数的用法

(本部分是本课程的重点及难点,教师要通过例题让学生理解编写多函数程序的必要性和好处,并要求学生必须逐渐习惯编写多函数程序。)

 

实验五  函数

 

(六)数组与指针

对本部分,要求重点掌握一维数组与一级指针的关系。本部分是学生对本课程是否掌握的关键衡量内容。教师要尽量精心组织一套有效方法,提高学生的理解水平。

1.掌握一维数组的定义方法、一维数组元素引用方法和输入(出)方法,理解数组名和首地址的关系,结合调试工具理解数组元素在内存中的存放方式。

2.掌握一维数组的基本应用,包括:统计,求最大(小)值,查找,简单排序方法(至少掌握冒泡法和选择法排序)等。了解数组的插入与删除等操作。掌握编写和调试稍大规模程序的方法。

3.掌握字符串的存储方法和相关应用。

4.理解指针的概念,掌握指针作函数参数。

5.掌握二维数组的定义,数组元素的引用和初始化以及相关应用。

6.理解指向一维数组与指针的关系。

7.了解二维数组与指针的关系,了解二级指针和行指针的概念,了解指针数组的定义和应用,了解返回指针值的函数和指向函数的指针,了解动态内存分配及动态数组。

(其中,一维数组和字符串的相关应用是本课程的重点,教师要教会学生把每一个应用分别定义函数实现并单独测试,最终实现让学生逐步完成一个较大程序的设计和调试。另外,指针及相关内容是本课程的难点,教师要结合调试工具,引导学生观测指针变量和间接引用的结果,然后再引导学生学会使用指针。)

 

 

实验六  数组与指针编程

 

(七)结构体与共用体等

1.理解结构体的概念,掌握结构体类型和结构体变量的定义方法,掌握结构体类型变量和成员变量的引用方法。

2.掌握结构体数组的相关应用,并指导学生编写多函数程序

3.了解指向结构体的指针,了解链表结点的结构形式,链表的基本操作

4.了解共同体的含义,共用体与结构体的区别、枚举类型和位段的相关用法

    

实验七 结构体编程

 

(八) 文件

了解文件的概念、文件的读写过程,了解与文件操作相关的库函数及其使用方法。

 

实验八  综合编程

 

参考资料

在线资源:

https://www.fenby.com/courses/cyu-yan-ji-chu-ke-cheng/

https://www.icourse163.org/course/zju-9001#/info。翁凯.中国大学MOOC网站慕课课程《C语言程序设计》.

参考书:

 (美)琼斯,艾特肯. 《 21天学通C语言》(第6版). 信达工作室译. 人民邮电出版社. 2003(优点:循序渐进,深入浅出,结构合理,更适合自学)

Brian W.Kernighan,Dennis Ritchie. 《C 程序设计语言(英文影印版)》(第二版). 清华大学出版社或机械工业出版社.(优点:由C语言的开发者编写,最专业、最准确)

颜晖. 《C语言程序设计实验指导》. 高等教育出版社. 2008(优点:调试过程截图丰富,便于学生课下自学)