《C语言程序设计》课程教学大纲一、课程教学目的本课程系统学习C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用C语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。二、课程教学要求通过本课程的学习,应熟练掌握C语言中的基本知识、各种语句及程序控制结构,熟练掌握C语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用C语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。三、课时分配本学科计划学时为246学时,其中理论与实训课时比例为7:3。四、课程教学重、难点课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。难点:指针的使用、结构体链表的构造和使用及函数的参数传递。五、课程教学方法(或手段)本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。六、课程教学内容第一章C语言概述1.教学内容(1)编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式);(2)C语言的历史背景、特点;(3)C语言源程序的格式和程序结构;(4)C程序的上机步骤。2.重、难点提示(1)重点:掌握简单的C程序格式,包括main()函数、数据说明、函数开始和结束标志等;(2)难点:编程入门以及对语言的理解。第二章算法1.教学内容(1)算法的概念及特性;评价算法优劣的方法(时间和空间);(2)简单算法举例;(3)算法的表示(自然语言、流程图、N-S流程图);(4)结构化程序设计的基本思想及基本步骤。2.重、难点提示(1)重点:算法流程图三种基本结构(以后各章学习中利用流程图强化对程序的理解);(2)难点:算法概念以及对结构化程序设计思想的理解。第三章数据类型、运算符与表达式1.教学内容(1)基本数据类型及其常量的表示法(字符和字符串常量),各种数制(八、十、十六进制)的整型数和长整型数,实型数(float和double);(2)变量的类型说明、初始化及引用;(3)运算符与表达式:2.重、难点提示(1)重点:掌握C的几种基本数据类型,不同类型数据间的混合运算规则;不同运算符的使用特点,清楚每种运算符的优先级与结合性;各种表达式的含义与使用要点。(1)难点:不同类型数据间的混合运算;运算符的优先级与结合性。第四章最简单的C程序设计—顺序程序设计1.教学内容(1)C程序结构和语句的构成;(2)顺序结构程序的设计:赋值语句的使用要点;(3)数据的输入与输出:2.重、难点提示(1)重点:顺序结构程序的表达式语句形式;输入/输出函数的表示与调用方法;利用流程图加深对顺序结构程序的理解。(2)难点:格式输入与输出表示中各种格式字符的表示含义。第五章选择结构程序设计1.教学内容(1)关系运算符和关系表达式;(2)逻辑运算符和逻辑表达式;(3)if语句(if;if…else…;if…elseif…else…);(4)switch和break语句。2.重、难点提示(1)重点:关系、逻辑运算符及其表达式的语法形式;掌握if语句;switch语句;利用流程图加深对选择结构程序的理解。(1)难点:关系与逻辑运算符表达式的结果判定;if语句嵌套的层次判定;程序中使用break语句运行结果的判定。第六章循环控制1.教学内容(1)用goto语句构成循环、for语句、while语句和do…while语句;(2)循环嵌套;(3)break,continue语句。2.重、难点提示(1)重点:掌握while语句与dowhile语句的结构,for语句的结构,其使用方法;常见的循环嵌套形式;正确区分for语句、do…while语句与while语句;break语句和continue的应用及其区别;(2)难点:分析总结常用的程序设计方法及算法特点,并能编写相应的程序。第七章数组1.教学内容⑴数组的含义与存储特点;⑵数组的定义与使用;⑶字符数组。2.重、难点提示(1)重点:掌握一维数组、二维数组;字符数组与字符串的概念与定义方法,常用的字符串处理函数。(2)难点:数组下标的起始数问题;利用数组形式进行程序设计的一般方法与典型算法。第八章函数1.教学内容⑴函数的定义;⑵函数的调用(一般调用、嵌套调用、递归调用),return语句;⑶参数的传递方式:形式参数与实在参数;⑷局部变量与全局变量;⑸变量的动态存储与静态存储;⑹内部函数与外部函数。2.重、难点提示(1)重点:掌握函数定义的一般形式;函数的调用的几种形式;函数嵌套调用的一般过程;数组名作为函数的参数的一些特点;局部变量与全局变量的概念及它们的使用特点。(2)难点:不同的函数参数传递方法在程序中应用的结果判定;利用函数调用方法实现程序设计中涉及的参数定义、参数传递以及返回值问题;函数调用的理解。第九章预处理命令1.教学内容⑴预处理的概念与特点;⑵符号常数和宏的定义;⑶“文件包含”处理。2.重、难点提示(1)重点:宏定义的方法;“文件包含”与预处理的应用。(2)难点:宏定义的方法。第十章指针1.教学内容⑴指针与地址的概念;⑵指针变量的定义,初始化;指针变量的引用(取地址运算符&及指针运算符*);指针变量作为函数参数的应用;⑶指针与数组(数组的指针和指向数组的指针变量);⑷字符串的指针和指向字符串的指针变量;⑸函数的指针和指向函数的指针变量、返回指针值的指针函数;⑹指针数组和指向指针的指针;⑺对main()函数命令行参数的基本了解。2.重、难点提示(1)重点:指针变量定义、初始化和引用;数组的指针和指向数组的指针变量;字符串的指针和指向字符串的指针变量;指针数组与指向指针的指针。(2)难点:指针概念深刻理解;区别指向数组的指针和指针数组;指向指针的指针;有关指针的数据类型定义和指针的相关运算。第十一章结构体与共用体1.教学内容⑴定义结构体类型变量的方法;⑵结构体变量的引用与结构体变量的初始化;⑶结构体数组与指向结构体数据的指针;⑷指向结构体类型数据的指针及用指针处理链表;⑸共用体;⑹枚举类型;⑺用typedef定义类型。2.重、难点提示(1)重点:掌握结构体类型变量的定义方法;结构体类型变量的引用方法;结构体类型变量如何在定义的同时初始化;通过图示正确理解链表的概念和形态,共同体的含义、共同体类型变量的定义方法。(2)难点:结构体与共用体概念的掌握;各种结构体结构的定义。第十二章位运算1.教学内容⑴运算符和位运算;⑵位运算举例;⑶位段。2.重、难点提示(1)重点:掌握各种位运算符,运算规则和优先级。(2)难点:各种位运算符的运算规则和优先级。第十三章文件1.教学内容⑴文件类型指针;⑵文件的打开与关闭;⑶文件的读写;⑷文件的定位。2.重、难点提示(1)重点:掌握文件操作的相关标准函数;(2)难点:文件的读写和定位操作。七、实验教学内容实验项目(一):C语言中控制语句的使用(1)项目类别:必做(2)项目性质:综合性(3)项目主要目的要求:掌握各类控制语句的书写格式,能在具体问题解决时给出合适的程序控制结构;用分支结构实现程序的条件控制;用循环结构实现程序中重复执行操作的控制。(4)主要仪器:计算机(5)实验考核方法:随堂考查实验项目(二):C语言中数组的使用(1)项目类别:必做(2)项目性质:综合性(3)项目主要目的要求:掌握数组这种构造类型的特点,如何用数组数据对象并对数据对象进行处理;熟练掌握一维数组的定义、引用、初始化,用一维数组来对字符进行处理;掌握二维数组的定义、引用、初始化,用二维数组实现矩阵的有关方法算法。(4)主要仪器:计算机(5)实验考核方法:随堂考查实验项目(三):C语言中函数的使用(1)项目类别:必做(2)项目性质:综合性(3)项目主要目的要求:C语言中用函数来实现子功能模块,掌握系统函数的调用方法及用户自定义函数的定义、调用方法;用自定义函数来实现一个具体问题;用自定义函数的嵌套调用来实现一个复杂问题。(4)主要仪器:计算机(5)实验考核方法:随堂考查实验项目(四):C语言中指针的使用(1)项目类别:必做(2)项目性质:综合性(3)项目主要目的要求:掌握指针变量的运用,通过指针引用数组元素的方法,函数指针变量作函数的参数;在程序中进行指针变量的运算操作,指针变量作函数的参数;数组元素的指针。(4)主要仪器:计算机(5)实验考核方法:随堂考查实验项目(五):C语言中结构体与链表的使用(1)项目类别:必做(2)项目性质:综合性(3)项目主要目的要求:掌握结构体类型变量的定义和使用;结构体类型数组的概念和应用;链表的创建与使用;检共用体的概念与使用。(4)主要仪器:计算机(5)实验考核方法:随堂考查实验项目(六):C语言中文件的使用(1)项目类别:必做(2)项目性质:综合性(3)项目主要目的要求:掌握文件以及缓冲文件系统、文件指针的概念;学会使用文件打开、关闭、读、写等文件操作函数;学会用缓冲文件系统对文件进行简单的操作。(4)主要仪器:计算机(5)实验考核方法:随堂考查八、课程考核方式1.考核方式:闭卷考试2.成绩构成:平时+期末九、选用教材和参考书目[1]《C程序设计》(第三版),谭浩强编,清华大学出版社,2007。[2]《数据结构—用C语言描述》(第二版),唐策善编,高等教育出版社,2004。[3]《程序设计基础与C语言》(第一版),梁力.郭晓玲.高浩编,西安电子科技大学出版社,2001。[4]《C语言程序设计》(第二版)刘德恒编,电子工业出版社,2001。