C语言是一门高效实用的程序设计语言,同时又具有其他高级语言所不具备的低级语言功能,不但可用于编写应用程序,还可用于编写系统程序。通过本课程学习,要求学生掌握C程序设计语言的基本知识、面对过程的基本概念,程序设计的基本方法与思路,包括数据类型、表达式、各种基本语句、模块化程序设计、常用算法等,并能综合应用这些知识解决简单的实际问题,同时培养学生良好的编程能力和严谨的计算思维能力。
课程编码
0622036
课程类别
通识教育必修课
课程名称
C程序设计
英文名称
CProgrammingLanguage
学分
3.5
建议修读学期
2
总学时数
72
其中:实践学时
实验学时
18
其他学时
0
预修课程
计算机基础及实验
考核方式
期末考试、期中考试与平时上机作业考察相结合
适用专业
物理学专业(师范)
大纲执笔人
余景景
大纲审核人
曹辉
1.通过学习C语言的基本概念、语法、语义和各种数据类型的使用特点,引导学生从实际问题中抽象数据结构,训练和培养学生的逻辑思维能力、抽象思维能力;(支撑毕业要求3,4,5)
2.掌握结构化程序设计思想、最基本算法的设计与实现方法、C语言程序设计的方法及编程技巧,能正确使用C语言编写程序,培养学生运用结构化思想有步骤有条理地分析问题、借助计算机分析和解决有关实际问题的能力,从而培养计算思维能力;(支撑毕业要求3,4,5)
4.培养学生善于观察分析和创新精神,认真、细致严谨、精益求精的职业素养和团队协作能力。(支撑毕业要求8,11)
毕业要求
指标点
课程目标
毕业要求3
[知识整合]
课程目标1,2
毕业要求4
[教学能力]
课程目标1,2,3
毕业要求5
[技术融合]
初步掌握应用信息技术优化物理课堂教学的方法技能,能够运用信息技术进行物理教学设计、实施和评价,具有运用信息技术支持学习设计和转变学生物理学习方式的初步经验;
毕业要求8
[自主学习]
具有终身学习与专业发展意识。养成自主学习习惯,具有自我管理能力。
课程目标3,4
毕业要求10
[反思研究]
运用批判性思维方法,养成从学生学习、课程教学、学科理解等不同角度反思分析问题的习惯。
课程目标3
毕业要求11
[交流合作]
理解学习共同体作用,具有团队协作精神;具有较强的语言表达能力和交流沟通能力,掌握团队协作技能,积极开展小组互助和合作学习。
课程目标4
三、教学内容、重难点和课时安排
本课程主要讲述C语言的特点、算法及其描述、数据类型、运算符与表达式、顺序结构、选择结构、循环结构、函数、数组、指针、结构体与共用体、文件等。总课时72学时,包括授课课时以及实验学时。
章
课程内容
授课
实验
总学时
1
C语言发展与特点、简单C程序,
算法及算法描述
3
数据的表现形式与运算、数据的输入输出
6
8
4
选择结构和条件判断、if语句实现、switch语句实现
5
循环结构的流控制语句、经典循环程序
10
一维数组、二维数组、字符数组与字符串
12
7
函数及函数调用、嵌套与递归、变量作用域与存储类别
指针与间接引用、指针引用数组、字符串、指针与函数
9
结构体、共用体;结构体数组、指针和链表
文件、顺序读写数据文件、随机读写数据文件
合计
54
第一章程序设计和C语言(支撑课程目标3,4)
1.教学基本要求
了解C语言的历史背景和特点;通过简单C程序掌握C语言程序上机步骤及C语言程序的编辑、编译、连接过程。
2.本章教学要点
C程序特点、C程序的步骤与方法。
3.教学具体内容及考核要求
§1.1什么是计算机程序(了解)
§1.2什么是计算机语言(了解)
§1.3C语言的发展及其特点(理解)
§1.4最简单的C语言程序(了解)
§1.5运行C程序的步骤与方法(掌握)
§1.6程序设计的任务(了解)
第二章算法——程序灵魂(支撑课程目标1,2)
了解算法的特性,掌握算法的几种表示方法
算法特点、三种基本结构的流程图表示
§2.1什么是算法(理解)
§2.2简单的算法举例(理解)
§2.3算法的特性(理解)
§2.4怎样表示算法(掌握)
§2.5结构化程序设计方法(了解)
第三章最简单的C程序设计(支撑课程目标1,4)
了解数据类型的概念;掌握整型、实型、字符型常量和变量的定义,表示及使用;赋值运算、算术运算以及不同数据类型的运算法则,掌握各种类型数据对象输入输出方法,掌握简单的顺序结构程序的编写方法。
整型、实型、字符型常量和变量的定义、表示及使用,怎样确定常量的类型;赋值运算、算术运算以及不同数据类型的运算法则;标准输入和输出函数getchar()、putchar(),printf(),scanf()。
§3.1顺序程序设计举例(理解)
§3.2数据的表现形式及其运算(掌握):数据类型、常量、变量、整型数据、字符型数据、浮点型数据、运算符和表达式、
§3.3C语句(掌握):赋值语句
§3.4数据的输入输出(掌握):用printf(),scanf()实现数据的输入和输出,用getchar()、putchar(),进行字符型数据的输入输出。
第四章选择结构程序设计(支撑课程目标1,2,3,4)
掌握通过关系运算和逻辑运算进行各种条件的表达;掌握C语言的选择结构语句:if语句和switch语句;掌握用并能应用选择结构进行编程。
实现逻辑判别的运算:关系运算和逻辑运算及其表达式;条件运算符和表达式;选择结构的嵌套;switch结构实现多分支选择结构。
§4.1选择结构和条件判断(理解)
§4.2关系运算符和关系表达式(掌握)
§4.3逻辑运算符和逻辑表达式(掌握)
§4.4用if语句实现选择结构(熟练掌握)
§4.5选择结构的嵌套(熟练掌握)
§4.6条件运算符合条件表达式(掌握)
§4.7用switch语句实现多分支选择结构(掌握)
§4.8选择结构程序综合举例(应用)
第五章循环结构程序设计(支撑课程目标1,2,3,4)
掌握while,do…while和for三种循环控制语句以及改变循环执行状态的break和continue语句;掌握循环程序设计方法。
理解循环体和循环条件,掌握用三种循环语句实现循环结构的方法,for语句的执行顺序;循环的嵌套;理解并掌握迭代、递推等基本循环程序设计方法。
§5.1为什么需要循环控制(理解)
§5.2用while语句实现循环(熟练掌握)
§5.3用do…while语句实现循环(熟练掌握)
§5.4用for语句实现循环(熟练掌握)
§5.5循环的嵌套(掌握)
§5.6几种循环的比较(理解)
§5.7改变循环执行的状态(掌握)
§5.8循环程序综合举例(应用)
第六章利用数组处理批量数据(支撑课程目标1,2,3,4)
掌握一维数组、二维数组的定义、初始化及相应数组元素的引用;掌握字符数组输入输出方式以及几种常用的字符串处理函数。
重点掌握一维和二维数组的定义、初始化及相应数组元素的引用,掌握对数组元素遍历、排序、查找、以及增删数据的方法;理解字符串和掌握常用的字符串处理函数。
§6.1怎样定义和引用一维数组(熟练掌握)
§6.2怎样定义和引用二维数组(掌握)
§6.3字符数组及其应用(熟练掌握)
第七章用函数实现模块化程序设计(支撑课程目标1,2,3,4)
掌握函数定义、函数调用,函数形式参数和实际参数的含义及定义方式,参数传递机制(传值,传地址操作);掌握递归、嵌套调用的含义、定义及使用;掌握局部变量和全局变量的定义方式和作用范围;理解变量的存储方式和生存期。
如何通过自定义函数实现结构化编程;调用函数的方法及参数传递;函数的嵌套调用;函数的递归调用;数组名作为函数参数实现批量数据的传递;局部变量和全局变量的区别;变量的存储类别。
§7.1为什么要用函数(了解)
§7.2怎样定义函数(掌握)
§7.3调用函数(熟练应用)
§7.5函数的嵌套调用(熟练应用)
§7.6函数的递归调用(掌握)
§7.7数组作为函数参数(掌握)
§7.8局部变量和全局变量(掌握)
§7.9变量的存储类型(掌握)
§7.11内部函数和外部函数(了解)
第八章善于利用指针(支撑课程目标1,3,4)
在理解指针及地址的概念的基础上,重点掌握指针变量的定义、初始化、引用及指针的各种应用形式:数组指针、函数指针、字符串指针等。
指针是C语言的特点,也是C语言的难点。本章重点和难点是理解指针变量以及指针指向的变量,以及掌握如何通过指针变量实现对指向变量的间接访问,尤其是通过指针访问数组元素、以及引用字符串。注意区分指向数组的指针和指针数组和指向指针数据的指针。
§8.1指针是什么(理解)
§8.2指针变量(掌握)
§8.3通过指针引用数组(掌握)
§8.4通过指针引用字符串(掌握)
§8.5指向函数的指针(了解)
§8.6返回指针值的函数(了解)
§8.7指针数组和多重指针(了解)
§8.8动态内存分配与指向它的指针变量(了解)
§8.9有关指针的小结(理解)
第九章用户自己建立数据类型(支撑课程目标1,3,4)
掌握结构体类型变量的定义,初始化、引用及结构体数组的使用方法;了解链表的定义方法及相应的操作;了解共用体类型变量、枚举类型变量的定义及引用方式。
本章是前面章节的大综合。教学重点包括:变量的定义,初始化、引用及结构体数组的使用;难点在于理解和掌握指向结构体变量的指针和指向结构体数组的指针。
§9.1定义和使用结构体变量(掌握)
§9.2使用结构体数组(掌握)
§9.3结构体指针(掌握)
§9.4用指针处理链表(了解)
§9.5共用体类型(了解)
§9.6使用枚举类型(了解)
第十章对文件的输入和输出(支撑课程目标1,3,4)
熟练掌握文件的基本操作:文件的打开、关闭、读写等。
掌握文件的基本概念和文件的定义方式,了解文本文件和二进制文件的区别,熟练掌握文件的打开与关闭、文件的基本读写操作、文件的状态监测(判断文件结束和文件读/写出错等)。
§10.1C文件的有关基本知识(理解)
§10.2打开与关闭文件(熟练掌握)
§10.3顺序读写数据文件(掌握)
§10.4随机读写数据文件(了解)
§10.5文件读写的出错检测(掌握)
1.课堂教师讲授(结合信息化课程平台及多媒体教学)与学生上机实践相结合。
2.教师主要讲授C语言基本知识点以及结构化程序设计方法。
3.教师通过实例代码、习题讲解、代码纠错等帮助学生理解抽象的概念和教学重点难点,并训练和培养学生的逻辑思维、抽象思维、以及批判与反思能力。
4.学生通过课堂小练、课堂反转以及上机实验,培养计算思维进行问题建模和利用结构化程序语言和方法解决实际问题的能力。
本课程的实践教学主要通过上机实验完成。
上机实验总学时18学时,具体实验内容、实验目的和实验类型如下:
(实验一)顺序结构程序设计(2学时)
实验类型:验证+设计
(实验二)选择结构程序设计(2学时)
1、了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”);
2、学会正确使用逻辑运算符和逻辑表达式、关系表达式和关系运算符;
实验类型:设计
(实验三)循环结构程序设计(2学时)
1、熟悉掌握用while语句,do—while语句和for语句实现循环的方法;
2、掌握程序设计中用循环结构实现一些常用算法:穷举法、递推法、递归法等。
(实验四)函数和编译预处理(2学时)
1、掌握定义函数的方法;
2、掌握函数实参与形参的对应关系以及“值传递”的方式;
3、掌握函数的嵌套调用和递归调用的方法;
4、掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
(实验五)数组和指针(4学时)
1、掌握—维数组和二维数组的定义、赋值和输入输出的方法;
2、掌握字符数组和字符串函数的使用。
(实验六)结构体使用(2学时)
1、掌握结构这种构造类型的定义,把一些内在有联系的不同类型的数据组成一个相互关联整体。
2、掌握结构变量的使用:结构变量成员的引用,结构变量的整体赋值,结构变量作为函数参数等。
(实验七)文件使用(2学时)
1、掌握文件以及缓冲文件系统、文件指针的概念;
2、学会使用文件打开、关闭、读、写等文件操作函数;
3、学会用缓冲文件系统对文件进行简单的操作。
(实验八)综合设计性实验(2学时)
综合利用本课程所学的C语言知识完成一个编程实训。
实验类型:综合设计
六、课程教学评价
课程教学目标
考核内容
评价依据
课程目标1
基本概念、语法、语义和各种数据类型
课堂、作业、实验表现;期中考试或上机考试;期末考试。
课程目标2
结构化程序设计思想、算法设计和编程技巧,分析问题、解决问题的能力;
上机操作实践,运用现代技术能力,知识延伸,综合知识考察
实验表现;上机考试;期末考试。
综合素质
七、成绩评定方法
期末考试与平时作业考察相结合,其中期末考试采用闭卷形式。期末总成绩由平时成绩和期末考试成绩两部分构成,具体计算方法如下:
总成绩=平时成绩×30%+期末成绩×70%
其中:平时成绩×30%=考勤×5%+作业×5%+实验×5%+期中随堂考试/测验等×15%。
①对于参加国内(外)交流交换学生,返校后申请相应学期课程重修,平时成绩为重修学期课程的期中考试/测试/考核百分制成绩×30%;
②对于因考试不及格而进行重修补考的学生,平时成绩由任课教师根据学生重修情况及重修学期期中考试/测试/考核成绩综合评定;
③对因突发情况考前临时申请缓考的学生,可申请相应学期课程重修,平时成绩以申请缓考学期的平时成绩及重修学期的表现由任课教师综合评定。
期末考试70%
期中测试/上机测试15%
课堂与作业+实验15%
课程目标达成评价方法
30
30/30
25+5=30
分目标达成度=0.15×(课堂与作业及实验平均分)/(课堂与作业及实验总分)+0.15×(分目标期中测试平均分/分目标期中测试总分或分目标上机测试平均分/分目标上机测试总分)+0.7×(分目标期末考试平均分/分目标期末考试总分)
50
40/20
15+15=30
15
20/40
0+30=30
10/10
5+5=10
八、课程学习资源
1.选用教材
谭浩强.C程序设计(第五版).清华大学出版社.2017.
2.主要参考书目
BrianW.Kernighan,DennisM.Ritchie.C程序设计语言(第2版).机械工业出版社,2004
K.N.King.C语言程序设计现代方法.人民邮电出版社.2007
PrataS.CPrimerPlus(第六版中文版).人民邮电出版社.2012
3.其它学习资源
九、课程学习建议
《C程序设计》课程是计算机基础教学的重点课程之一,它为其它专业课程奠定程序设计的基础,提供了程序设计工具.通过本课程的学习,使学生掌握C语言的基本内容,程序设计的基本方法与编程技巧,培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为提高学生的素质和后继课程的学习提供必要的基础.
开设这一课程的目的在于使学生掌握处理结构化程序设计的基本思想和方法,培养学生运用计算机等现代技术分析和解决有关实际问题的能力,并为今后学习后继课程打下必需的基础。
十、评分标准
评分标准
90-100
75-89
60-74
0-59
优
良
中/及格
不及格
扎实掌握C语言的基本概念、语法、语义和各种数据类型的使用特点,能顺利从实际问题中抽象数据结构,养成较强的抽象思维和逻辑思维能力。
掌握C语言的基本概念、语法、语义和各种数据类型的使用特点,能从实际问题中抽象数据结构,养成抽象思维和逻辑思维能力。
基本掌握C语言的基本概念、语法、语义和各种数据类型的使用特点,基本能从实际问题中抽象数据结构,养成基本的抽象思维和逻辑思维能力。
未掌握C语言的基本概念、语法、语义和各种数据类型的使用特点,不能从实际问题中抽象数据结构,没养成抽象思维和逻辑思维能力。
扎实掌握结构化程序设计思想、最基本算法的设计与实现方法和C语言程序设计的方法及编程技巧,能熟练正确使用C语言编写程序,具备灵活运用结构化思想有步骤有条理地分析问题、借助计算机分析和解决有关实际问题的能力和较强的计算思维能力
能够掌握结构化程序设计思想、最基本算法的设计与实现方法和C语言程序设计的方法及编程技巧,能正确使用C语言编写程序,具备运用结构化思想有步骤有条理地分析问题、借助计算机分析和解决有关实际问题的能力和计算思维能力。
基本掌握结构化程序设计思想、最基本算法的设计与实现方法和C语言程序设计的方法及编程技巧,基本能正确使用C语言编写程序,基本具备运用结构化思想有步骤有条理地分析问题、借助计算机分析和解决有关实际问题的能力和计算思维能力。
未能掌握结构化程序设计思想、最基本算法的设计与实现方法和C语言程序设计的方法及编程技巧,不能正确使用C语言编写程序,不具备运用结构化思想有步骤有条理地分析问题、借助计算机分析和解决有关实际问题的能力和计算思维能力。
具有善于观察、分析和创新精神,具备认真、细致严谨和精益求精的职业能力和团队协作能力。
能够具有善于观察、分析和创新精神,能够具备认真、细致严谨和精益求精的职业能力和团队协作能力。
基本具有善于观察、分析和创新精神,基本具备认真、细致严谨和精益求精的职业能力和团队协作能力。
善于观察、分析和创新精神不足,尚未形成认真、细致严谨和精益求精的职业能力和团队协作能力。