
一、课程基本信息
| 开课单位 | 信息与网络工程学院计算机系 | 课程类别 | 通识教育课程 | |
| 课程名称 | 中文名称:C语言程序设计 英文名称:The C Programming Language | 课程编码 | TS28101 | |
| 开课对象 | 信息与计算科学本科 | 开课学期 | 第2、3学期 | |
| 学时/学分 | 总学时72、理论课学时48、实验课学时24 | |||
| 先修课程 | 高等数学、大学计算机基础 | |||
| 课程简介: 《C语言程序设计》是工学、理学专业的一门重要基础课,主要内容包括:C数据类型、运算符和表达式、基本输入输出、选择控制结构、循环控制结构、函数、数组、指针、字符串、结构体和共用体、文件操作等。通过讲授使学生掌握C语言的基本语法、语句、控制结构以及结构化程序设计的基本思想和方法, 培养学生熟练使用C语言分析和解决实际问题的能力,为学生进一步学习其他专业课程和今后从事软件开发工作打下坚实的基础。 | ||||
本课程的目标不仅让学生掌握高级程序设计语言的相关知识,更重要的是在实践中逐步掌握程序设计的思想和方法,以C语言和计算机作为工具,通过程序设计解决和处理现实世界中,特别是与本专业有关的大量实际问题,从而培养学生解决问题的应用能力,为后续课程的学习和计算机应用奠定良好的基础。具体目标如下:
1.掌握C语言程序设计的基本结构及上机步骤;
2.掌握C语言数据类型;
3.掌握C语言中格式输入输出函数、字符输入输出函数的使用;
4. 掌握顺序、分支、循环结构程序设计方法与技巧;
5. 理解冒泡排序算法;
6. 掌握函数的定义、调用、变量作用域和存储类型;
7. 掌握指针变量的概念、定义和使用;
8. 掌握结构体、联合体、枚举变量的定义与使用;
9. 理解文件包含命令、宏的使用方法;
10.了解使用文件处理函数进行文件读写等操作。
三、教学学时分配
《C语言程序设计》课程理论教学学时分配表
| 章次 | 主要内容 | 学时 分配 | 教学方法或手段 |
| 第一章 | C语言程序设计概述 | 2 | 讲授法、演示法 |
| 第二章 | C语言的数据类型、运算符和表达式 | 4 | 讲授法 |
| 第三章 | C语言数据输入输出 | 2 | 讲授法、演示法 |
| 第四章 | 语句和流程控制 | 10 | 案例法 |
| 第五章 | 数组 | 8 | 案例法 |
| 第六章 | 函数 | 8 | 案例法 |
| 第七章 | 指针 | 6 | 案例法 |
| 第八章 | 构造数据类型 | 4 | 案例法 |
| 第九章 | 编译预处理 | 1 | 讲授法 |
| 第十章 | 位运算 | 1 | 讲授法 |
| 第十一章 | 文件 | 2 | 案例 |
| 合计 | 48 |
《C语言程序设计》课程实验内容设置与教学要求一览表
| 序号 | 实验项目名称 | 实验内容 | 教学要求 | 学时 分配 | 实验 类别 | 实验 类型 | 每组 人数 |
| 1 | 实验环境、输入输出 | 1.C程序的编辑、编译、连接和运行; 2、printf和scanf的使用方法; 3、C语言程序在VC中的调试。 | 1.掌握C语言的上机步骤,C程序的编辑、编译、连接和运行; 2.掌握简单赋值语句、printf和scanf的使用方法; 3.了解C语言程序在VC中的调试方法。 | 2 | 必做 | 验证 | 1 |
| 2 | 数据类型与运算符 | 1.C语言基本数据类型及其定义; 2.C语言算术运算符及其优先级; 3.变量初始化与变量赋值。 | 1.了解C语言基本数据类型及其定义; 2.掌握基本数据类型; 3.掌握C语言算术运算符及其优先级; 4.掌握表达式的求值规则; 5.掌握变量初始化与变量赋值。 | 2 | 必做 | 设计 | 1 |
| 3 | 分支结构程序设计 | 1.if、switch语句的使用; 2.if语句的嵌套使用; 3.if多分支语句。 | 1.了解逻辑运算符和逻辑表达式; 2.掌握if、switch语句的使用方法; 3.掌握if语句的嵌套使用; 4.掌握if多分支语句; 5.掌握switch语句。 | 2 | 必做 | 设计 | 1 |
| 4 | 循环结构程序设计 | 1.while实现循环程序设计及其程序调试; 2.do-while实现循环程序设计及其程序调试; 3.for实现循环程序设计及其程序调试; 4.掌握循环语句的嵌套使用。 | 1.掌握while实现循环程序设计及其程序调试; 2.掌握do-while实现循环程序设计及其程序调试; 3.掌握for实现循环程序设计及其程序调试; 4.掌握循环语句的嵌套使用; 5.理解break、continue、goto语句的使用。 | 4 | 必做 | 设计 | 1 |
| 5 | 数组 | 1.数组的输入输出、引用数组元素; 2.双重循环在数组中的应用; 3.数组的应用。 | 1.了解数组的基本概念、定义及其初始化; 2.掌握数组的输入输出、引用数组元素; 3.掌握与数组常用的算法,如找最大最小值、排序、首尾颠倒等; 4.掌握双重循环在数组中的应用。 | 4 | 必做 | 设计 | 1 |
| 6 | 字符数组 | 1.字符数组的引用、输入输出; 2.字符数组相关函数的使用。 | 1.掌握字符数组的基本概念、定义及其初始化; 2.掌握字符数组的引用、输入输出; 3.掌握字符数组相关函数的使用。 | 2 | 必做 | 设计 | 1 |
| 7 | 函数 | 1.函数的定义、调用方法; 2.函数值传递与地址传递; 3.函数的嵌套调用和递归调用; 4.数组作为函数参数传递。 | 1.掌握函数的定义、调用方法; 2.理解函数形参与实参的对应关系; 3.了解局部变量和全局变量、动态变量和静态变量及其之间的区别; 4.理解函数值传递与地址传递; 5.掌握数组作为函数参数传递; 6. 掌握函数的嵌套调用和递归调用方法; 7. 掌握简单递归程序设计方法。 | 4 | 必做 | 设计 | 1 |
| 8 | 指针 | 1.指针的算术运算和关系运算; 2.字符串的指针和指向字符串的指针变量; 3.用指针数组处理多个字符串数据。 | 1.理解指针的概念、定义和使用方法; 2.理解指针运算和使用指针访问基本变量; 3.掌握指针的算术运算和关系运算; 4.了解字符串的指针和指向字符串的指针变量。 | 2 | 必做 | 设计 | 1 |
| 9 | 结构体 | 1.结构体、共用体、枚举、位段的定义和使用; 2.位段的作用及使用方法; 3.结构体、结构体指针、共用体、枚举类型编程与使用。 | 1.了解结构体、共用体、枚举、位段基本概念; 2.掌握结构体、共用体、枚举、位段的定义和使用; 3.掌握位段的作用及使用方法; 4.掌握结构体、结构体指针、共用体、枚举类型编程与使用; 5.了解位段定义及使用方法。 | 2 | 必做 | 设计 | 1 |
第一章 C语言程序设计概述(2学时)
(一)教学要求
通过本章内容的学习,了解C语言发展史、特点、基本词法,理解C语言程序设计的基本结构,掌握C程序的上机步骤等。
(二)教学重点与难点
教学重点:C语言程序的基本结构;
教学难点:程序算法。
(三)教学内容
第一节 C语言的历史与特点
1.C语言的由来;
2.C语言的特点。
第二节C语言概述
1.C语言基本词法;
2.计算机常用算法及其表示;
3. C语言上机步骤。
本章习题要点:C语言的发展和特点;简单的C程序介绍;算法、程序设计语言和程序设计方法;C程序的开发过程。
第二章 C语言的数据类型和运算(4学时)
(一)教学要求
通过本章内容的学习,了解C语言数据类型,理解C语言数据类型之间的区别及在不同表达式中的用法,掌握C语言中自增自减运算符及其用法等。
(二)教学重点与难点
教学重点:自增自减运算符及其表达式;
教学难点:赋值、条件运算符,运算符的优先级和结合方向。
(三)教学内容
第一节 C语言的数据类型
1.基本数据类型;
2.常量与变量。
第二节 运算符
1.C语言中常见运算符;
2.自增自减运算符;
3.算术运算符和算术表达式;
4. 关系运算符和关系表达式;
5. 逻辑运算符和逻辑表达式;
6. 赋值运算符和赋值表达式;
7. 逗号运算符和逗号表达式;
8. 条件运算符和条件表达式。
本章习题要点:C语言的基本数据类型;自增自减运算符;基本运算符及其表达式;运算符的优先级和结合方向。
第三章 C语言数据输入输出(2学时)
(一)教学要求
通过本章内容的学习,了解C语言输入格式字符所控制的数据对象,理解数据输入(输出)形式和方法,掌握C语言中格式输入输出函数、字符输入输出函数使用等。
(二)教学重点与难点
教学重点:scanf、printf格式输入输出函数;
教学难点:格式输入输出函数格式串及其应用。
(三)教学内容
教学内容:
第一节 格式输入/输出函数
1.格式输入函数;
2.格式输出函数。
第二节 字符输入/输出函数运算符
1.字符输出函数(putchar);
2.字符输入函数(getchar)。
本章习题要点:C语言的格式输入输出函数;字符输入输出函数。
第四章 语句和流程控制(10学时)
(一)教学要求
通过本章内容的学习,了解C语言语句,理解顺序、分支、循环结构程序设计方法,掌握运用这三种结构解决数学上的基本问题,使用循环嵌套解决稍微复杂的问题等。
(二)教学重点与难点
教学重点:分支结构、循环结构程序设计;
教学难点:多分支结构、多重循环结构。
(三)教学内容
第一节 C语言语句
1.表达式语句;
2.函数调用语句;
3. 控制语句;
4. 复合语句;
5. 空语句。
第二节 分支结构
1.if 形式;
2.if – else 形式;
3. if – else –if 形式;
4. if 嵌套;
5. switch语句。
第三节 循环结构
1.while语句;
2.do-while语句;
3. for语句。
第四节 转移语句
1.goto语句;
2.break语句;
3. continue语句。
第五节 循环嵌套
1.循环嵌套结构;
2.常见循环实例。
本章习题要点:分支结构;多分支结构;while循环;do-while循环;for循环;条件转移。
第五章 数组(8学时)
(一)教学要求
通过本章内容的学习,了解一维数组、二维数组的定义、初始化、表示方法、输入输出,理解冒泡排序和选择排序算法,掌握字符串数组的定义、输入输出、字符串处理函数的使用等。
(二)教学重点与难点
教学重点:一维数组、二维数组;
教学难点:数组排序、矩阵处理、字符串处理。
(三)教学内容
第一节 一维数组
1.一维数组类型说明;
2.一维数组元素表示方法;
3. 一维数组赋值。
第二节 二维数组
1.二维数组类型说明;
2.二维数组元素的表示方法;
3. 二维数组的初始化。
第三节 字符数组
1.字符数组类型说明;
2.字符数组的初始化;
3. 字符串的输入/输出;
4. 字符串处理函数。
本章习题要点:一维数组元素的表示方法;二维数组元素的表示方法;排序算法; 矩阵处理。
第六章 函数(8学时)
(一)教学要求
通过本章内容的学习,了解函数的定义、调用,理解函数的参数和函数的值的使用,掌握数组作为函数的参数、函数的嵌套与递归调用、变量作用域和存储类型等。
(二)教学重点与难点
教学重点:基本数据类型、数组、指针作为函数参数;
教学难点:函数的嵌套与递归调用。
(三)教学内容
第一节 函数的概念
1.函数概述;
2.函数定义;
3. 函数调用。
第二节 函数的参数和函数的值
1.函数的参数;
2.函数的值;
3. 函数说明。
第三节 数组作为函数参数
1.数组元素作函数实参;
2.数组名作为函数参数。
第四节 函数的嵌套与递归调用
1.函数的嵌套调用;
2.函数的递归调用。
第五节 变量作用域和存储类型
1.变量作用域;
2.变量存储类型。
本章习题要点:普通数据类型作为函数参数;构造数据类型作为函数参数;函数处理算术问题。
第七章 指针(6学时)
(一)教学要求
通过本章内容的学习,了解指针与指针变量的定义,理解指针型函数、指针数组,掌握普通指针变量、数组指针变量、字符串指针变量、函数指针变量的用法等。
(二)教学重点与难点
教学重点:指针访问普通数据类型、数组;指针作为函数参数;
教学难点:函数指针与指针函数,二维数组的指针访问方法。
(三)教学内容
第一节 指针基本概念
1.指针变量的类型说明;
2.指针变量的引用;
3. 使用普通指针变量作为函数参数。
第二节 数组中的指针变量
1.数组指针变量;
2.数组名和数组指针变量作为函数参数;
3. 指向数组的指针变量。
第三节 字符数组中的指针变量
1.字符串指针变量;
2.字符串指针变量与字符数组。
第四节 指针高级用法
1.函数指针变量;
2.指针型函数;
3. 指针数组;
4. 命令行参数。
本章习题要点:指针的运算;数组元素的指针表示方法;字符串指针;指针作为函数参数。
第八章 构造数据类型(4学时)
(一)教学要求
通过本章内容的学习,了解普通变量和构造数据类型的区别,理解结构体变量、结构体数组,掌握结构体变量、结构体数组的引用、使用指针访问结构体数组等。
(二)教学重点与难点
教学重点:结构体、联合体、枚举变量的定义与使用;
教学难点:使用指针访问结构体数组
(三)教学内容
第一节 结构
1.结构类型定义和结构变量说明;
2.结构变量的引用;
3. 结构数组;
4. 结构指针变量的说明和使用;
5. 结构数组指针变量;
6. 结构指针变量作函数参数。
第二节 联合
1.联合类型的定义和联合变量的说明;
2.联合变量的赋值和使用。
第三节 枚举
1.枚举类型的定义;
2.枚举变量的说明;
3. 枚举类型变量的赋值和使用。
本章习题要点:结构体、结构体数组;联合;枚举;指针访问结构体变量。
第九章 编译预处理(1学时)
(一)教学要求
通过本章内容的学习,了解编译预处理的功能,理解宏定义、文件包含,掌握有参、无参宏定义等。
(二)教学重点与难点
教学重点:有参、无参宏定义;
教学难点:文件包含、条件编译。
(三)教学内容
教学内容:
第一节 宏定义
1.无参宏定义;
2.有参宏定义。
第二节 文件包含与宏定义
1.文件包含;
2.条件编译。
本章习题要点:无参宏定义;有参宏定义;文件包含。
第十章 位运算(1学时)
(一)教学要求
通过本章内容的学习,了解6种位运算。
(二)教学重点与难点
教学重点:位的6种运算;
教学难点:左移运算、右移运算。
(三)教学内容
教学内容:
第一节 位运算符
1.按位与运算;
2.按位或运算;
3. 按位异或运算;
4. 求反运算;
5. 左移运算;
6. 右移运算。
本章习题要点:位的六种运算。
第十一章 文件(2学时)
(一)教学要求
通过本章内容的学习,了解文件基本概念,理解文件如何读写数据,掌握文件基本操作等。
(二)教学重点与难点
教学重点:文件如何读写数据;
教学难点:文件高级操作。
(三)教学内容
第一节 文件概述
1.了解文件的基本概念;
2.掌握文件指针。
第二节 文件基本操作
1.了解文件打开;
2.了解文件关闭。
第三节 文件读写函数
1.理解字符读写函数;
2.理解字符串读写函数;
3. 理解数据块读写函数;
4. 理解格式化读写函数。
第四节 文件高级操作
1.了解文件定位;
2.了解文件随机读写;
3. 了解文件检测。
本章习题要点:文件的基本操作;文件的读写操作。
五、教学方法或手段
本课程目前采用课堂讲授、案例教学、上机操作实践等教学方法与手段、积极探索将传统教学与现代化教学手段相结合的教学模式,并运用现代信息技术、网络技术等手段改革传统的教学思想观念、教学方法和教学手段。本课程已做成计算机多媒体课件,运用学校网络平台,已把本课程的教学大纲、教案、习题、多媒体课件、参考文献等教学资料上网开放,实现优质教学资源共享,为学生自主学习、个性化学习提供了广阔平台,实现本课程教学资源的共享。
1) 讨论式教学:例如在讲授指针时,启发学生将指针和实际生活中的例子相比较,自己归纳总结出指针的基本步骤、思路以及特点,这样学生印象深刻,对于比较复杂的指针的使用有了实质性的了解,而不再是死记硬背。另外,对于实践性强的内容,如结构体等内容,安排专题学生自学,然后由一个学生在课堂上向大家讲述,大家再一起讨论、分析和评价,这样使每个学生都有兴趣积极参与,活跃课堂气氛,培养了自学的能力。
2) 理论联系实际的教学:在讲授数组、函数、结构体等内容时,一方面讲解语法,另一方面使用了可视化模拟软件,动态演示协议的运行,形象、生动、直观,增强了教学的效果。
3) 课内外结合式教学:在课外开放实验室,学生在课堂内学习,在课堂外即可实践,锻炼实际动手能力。
4)教学大纲、教案、习题、实验指导、参考资料、等内容全部上网,并向学生免费开放,学生可以在课外自主学习。
六、考核方式及评价要求
考核要求:本课程的主要目的是通过对C语言程序设计的语法规则、数据类型、数据运算、语句、系统函数、程序结构的学习,掌握应用C语言进行程序设计的技能,为进行各种实用程序开发奠定一个良好的基础。考核主要内容包括:
⑴ 熟练掌握C语言程序设计的数据类型(基本类型、构造类型、指针类型等)和各类运算符,能正确使用表达式实现各种数据的简单加工;
⑵ 熟练掌握C语言程序设计的三种基本结构(顺序、选择、循环)的特点,能使用相关语句完成这三种基本结构的程序设计任务;
⑶ 掌握C语言程序设计的常用库函数使用,以及用户函数的定义、调用、参数传递等方法;
⑷ 熟练掌握阅读和分析简短程序的方法和技巧;
⑸ 熟练掌握设计和调试简短程序的方法和技巧;
⑹ 了解并初步掌握实用程序的开发与调试技术。
考核方式:课堂考勤、理论课考查、实验、综合测试。1.平时成绩占20%,包含课堂考勤、理论课考查和作业;2.期末考试占80%,采用综合测试的方式。
七、教材及教学主要参考书
推荐教材:
《C语言程序设计》,张磊主编,清华大学出版社,2012年10月第3版;
《C语言程序设计实训与考试指导》,丁亚涛主编,高等教育出版社,2014年8月第3版。
参考书目:
《C程序设计》,谭浩强主编,清华大学出版社,2010年6月第4版;
《C程序设计》,姚国清等主编,航空工业出版社,2015年2月第2版;
《C语言程序设计教程》,朱鸣华主编,机械工业出版社,2014年1月第3版;
《C语言程序设计教程》,冯林主编,高等教育出版社,2015年3月第1版;
《C语言程序设计教程》,孟宪福主编,清华大学出版社,2015年9月第1版;
《C程序设计学习辅导》,谭浩强主编,清华大学出版社,2010年6月第4版;
《C程序设计教程与实验》吉顺如主编,清华大学出版社,2011年6月第1版;
《C 语言程序设计上机实验与习题指导》,李刚健等主编中国水利水电出版社2014年6月第1版。
八、说明
此部分可做一些补充说明,若无需说明则可省略该项。
