课程概述

《C语言程序设计》是许多后续专业课程的基础,同时她以其灵活性和实用性受到了广大计算机应用人员的喜爱。该课程学习的好坏直接影响着许多后续课程(包括《数据结构》、《面向对象程序设计》等课程)的学习。因此,C语言教学仅是起点,而非终点。

该课程是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。光靠听课和看书是学不会程序设计的,必须重视实践环节,包括编程和上机。

    课程的重点包括基本语法、程序控制结构、数组、结构体、指针以及结构化程序设计的基本思想和方法。通过本课程的学习,学生能掌握程序设计的核心部分,得到程序设计能力、逻辑思维能力的训练。为学生进一步学习其他专业课程和今后从事软件开发工作打下坚实的基础。

证书要求

采取百分制,60-79分可获得合格证书,85分以上可获得优秀证书。测验不难,只要认真学习都能够取得好的成绩。

授课大纲

(一)程序设计基本概念

【教学要求】

1)了解计算机语言的历史、特点及发展趋势;

2)掌握C语言的运行环境,初步了解运行一个C语言程序的过程。

3)掌握算法的概念和特点;

4)掌握用流程图、N-S流程图、伪代码表示算法;

5)理解结构化程序设计方法的概念。

【教学内容】

1)什么是计算机程序、什么是计算机语言

2)C语言的发展及其特点

3)最简单的C语言程序

4)运行C程序的步骤与方法

5)程序设计的任务

6)什么是算法、简单的算法举例

7)怎样表示一个算法:流程图方法、N-S图、伪代码

8)结构化程序设计方法

【教学重点与难点】

重点:C语言的特点,C 程序的上机步骤,流程图表示算法,N-S流程图表示算法,伪代码表示算法

难点:N-S流程图表示算法,伪代码表示算法

(二)程序三种基本结构

【教学要求】

1) 掌握基本数据类型的存储和表示方式;

2) 掌握运算符和表达式的使用方法;

3) 理解语句的概念及赋值语句的使用方法;

4)掌握数据输入输出函数的使用,并能够编写简单的顺序结构程序。

5)掌握关系运算符和关系表达式、逻辑运算符和逻辑表达式、条件运算符和条件表达式的使用方法;

6)能够运用if语句、switch语句实现选择结构,掌握if语句的嵌套;

7)熟练掌握三种循环语句的运用:while、do…while、for语句

8)掌握循环的嵌套

9)掌握break和continue语句的运用

【教学内容】

1) 顺序程序设计举例

2) 数据的表现形式及其运算:整型、字符型、浮点型、运算符和表达式

3) C语句:赋值语句

4) 数据的输入输出 : printf()、scanf()、putchar()、getchar()

5)用if语句实现选择结构

6)关系运算符和表达式、逻辑运算符和表达式

7)条件运算符和表达式

8)选择结构嵌套

9)switch 语句

10)用while 、do…while和for实现循环

11)循环的嵌套

12)用break和continue 改变循环的状态

【教学重点与难点】

重点:基本数据类型的存储和表示方式,运算符和表达式,赋值语句,printf()、scanf()函数,三种(关系逻辑条件)运算符和表达式,if语句及if语句的嵌套,三种循环语句的使用,循环嵌套,break、continue。

难点:printf()、scanf()函数,if语句的嵌套,while循环,for循环,循环嵌套。

(三)数组

【教学要求】

1)理解数组应用的场景

2)掌握一维数组和二维数组的概念、初始化和引用;

3)掌握字符数组和字符串的应用;

4)学会使用字符串处理函数。

【教学内容】

1) 一维数组的定义和引用

2) 二维数组的定义和引用

3) 字符数组的定义和引用

4) 字符串及字符串处理函数

【教学重点与难点】

重点:数组的应用场景,一维数组,二维数组,字符数组,字符串。

难点:二维数组的初始化及应用,字符串和字符数组的关系。

(四)模块化程序设计

【教学要求】

1) 理解模块化程序设计的思想;

2) 掌握函数的定义和调用方法;

3) 掌握函数的嵌套和递归调用;

4)掌握数组作为函数参数的用法;

5) 了解变量的存储类别和作用域。

【教学内容】

1) 为什么要用函数

2) 函数的定义、调用

3) 对被调用函数的声明和函数原型

4)函数的嵌套、递归调用

5)函数和数组的关系

6)变量的作用域、存储方式和生存期

【教学重点与难点】

重点:模块化设计思想,函数定义、调用、声明,函数嵌套调用,递归调用,数组作为函数参数,局部、全局变量,变量的存储方式。

难点:模块化设计思想,函数调用,函数嵌套、递归调用,数组作为函数参数。

(五)指针

【教学要求】

1)理解直接访问、间接访问数据的区别和联系;

2) 掌握指针、指针变量的区别;

3) 掌握数组、指针、指针数组的关系;

4)了解指向函数的指针、返回指针值的函数、指针数组;

5)掌握动态内存分配的概念,以及malloc()和free()的使用。

【教学内容】

1) 指针和指针变量的概念

2)通过指针引用数组、字符串

3)指向函数的指针、返回指针值的函数

4)指针数组和多重指针

5)动态内存分配与指向它的指针变量

【教学重点与难点】

重点:数据的直接访问、间接访问,指针变量的定义和引用,用指针访问数组,用指针访问字符串,指向函数的指针,动态分配内存

难点:数据的间接访问,指针引用数组,指针数组。

(六)自定义数据类型

【教学要求】

1)理解用户自定义类型的应用场景;

2)掌握结构体类型的定义,类型和变量的区别;

3)掌握有关链表的操作;

4)理解结构体和数组、指针的关系;

5)了解共用体、枚举类型的定义和使用;

6) 掌握文件的定义与分类,文件名的表示,文件的打开与关闭;

7) 了解顺序/随即读写数据文件的方法;

8) 了解如何对文件进行读写出错检测。

【教学内容】

1)定义和使用结构体变量

2)使用结构体数组

3)结构体指针

4)用指针处理链表

5)共用体、枚举类型

6)用typedef声明新类型名

7)C文件的有关基本知识

8)文件的打开、关闭、读取、写入

9)文件读写的出错检测

【教学重点与难点】

重点:结构体类型,结构体变量,结构体数组,结构体指针,链表,文件的概念、文件的打开关闭、读取、写入。

难点:结构体数组,链表,文件读取、文件写入。

参考资料

[1]苏小红,孙志刚等。C语言大学使用教程(第3版),电子工业出版社,2012.06

[2] Prata,S. C_Primer_Plus(第五版)中文版.北京:人民邮电出版社,2005.02

[3] H.M.DEITEL. C程序设计教程. 机械工业出版社.

[4]互联网络上的一些相关的文章、blog 、论坛等等,比如:https://www.csdn.net/ https://www.cyuyan.com.cn/