《C语言程序设计》教学大纲一、课程概述《C语言程序设计》是一门研究C语言基本知识与结构化程序设计方法,并采用C语言进行结构化程序设计的专业课程,内容包括C语言的数据类型、程序结构、各种语句、函数、预处理、文件,结构化程序设计方法,以及相应知识的应用等知识。《C语言程序设计》是计算机科学与技术及相近专业的一门重要基础课程,通过学习该课程,学生在结构化程序设计方法、程序设计语言与程序设计工具软件的使用等方面受到严格、系统的训练,初步掌握计算机软件设计与开发技术,为后续的VisualC++、数据结构、操作系统、数据库及其应用、软件工程等专业课程的学习及以后从事计算机软件开发工作打下扎实的基础。二、课程目标通过全面、深入、系统地介绍程序设计方法和程序设计语言,使学生初步了解计算机,建立起程序设计的概念,通过学习用C程序设计语言编写程序,初步掌握程序设计方法,养成良好的程序设计风格。程序设计包括两个方面内容:程序设计方法和程序设计语言。本课程针对一年级学生初始接触程序设计概念的特点,结合C程序设计语言,通过列举大量的应用实例,初步系统地介绍面向过程、面向模块和结构化程序设计的思想和方法。在此基础上,结合上机实践,使学生对程序设计有一个比较全面、系统地了解,为学生今后的学习打下扎实的理论基础。通过本课程的教学,要求学生:1知道C语言的发展过程、特点,本课程在整个计算机系列课程中的地位、作用和意义;2理解C语言及结构化程序设计中的基本概念;3学会使用C语言的数据类型、控制语句、函数定义与调用、预处理命令等知识进行程序设计;4掌握“自顶向下、逐步求精”这一结构化程序设计的基本方法,并将之应用于程序设计实践;5学会运用C语言进行较复杂的程序设计,解决一些实际的应用问题。独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。三、教学内容与教学要求本课程的知识与技能要求分为知道、理解、掌握、学会四个层次。这四个层次的一般涵义表述如下:知道——是指对这门学科的有关概念、算法、设计方法和应用方向的认知。理解——是指能对本课程涉及到的有关概念、原理与方法的说明和解释,并清楚它们的使用方法和实际应用。掌握——是指能运用已理解的概念、方法和算法分析有关的具体问题,并熟练运用所学的知识进行程序设计。学会——是指能模仿或在教师指导下独立地完成某些教学知识和技能的操作任务,并能识别程序设计中出现的问题。教学内容和要求见下表,表中的“√”号表示教学知识和技能的教学要求层次。教学内容及教学要求表教学内容知道理解学会掌握1.C语言概述1.1C语言出现的历史背景1.2C语言的特点1.3简单的C语言程序介绍1.4运行C程序的步骤与方法√√√√2.程序的灵魂——算法2.1算法的概念2.2简单算法举例2.3算法的特性2.4怎样表示一个算法2.5结构化程序设计方法√√√√√√3.数据类型、运算符与表达式3.1C语言的数据类型3.2常量与变量3.3整型数据3.4浮点型数据3.5字符型数据3.6变量赋初值3.7各类数值型数据间的混合运算√√√√√√3.8算术运算符和算术表达式3.9赋值运算符和赋值表达式3.10逗号运算符和逗号表达式√√√4.最简单的C程序设计——顺序程序设计4.1C语句概述4.2赋值语句4.3数据输入输出的概念及在C语言中的实现4.4字符数据的输入输出4.5格式输入与输出4.6顺序结构程序设计举例√√√√√√5.选择结构程序设计5.1关系运算符和关系表达式5.2逻辑运算符和逻辑表达式5.3if语句5.4switch语句5.5程序举例√√√√√6.循环控制6.1概述6.2用while语句实现循环6.3用do-while语句实现循环6.4用for语句实现循环6.5循环的嵌套6.6几种循环的比较6.7break语句和continue语句6.8程序举例√√√√√√√√7.数组7.1一维数组的定义和引用7.2二维数组的定义和引用7.3字符数组√√√8.函数8.1概述8.2函数定义的一般形式√√√8.3函数参数和函数的值8.4函数的调用8.5函数的嵌套调用8.6函数的递归调用8.7数组作为函数参数8.8局部变量和全局变量8.9变量的存储类别8.10内部函数和外部函数√√√√√√√9.预处理命令9.1宏定义9.2“文件包含”处理9.3条件编译√√√10.指针10.1地址和指针的概念10.2变量的指针和指向变量的指针变量10.3数组与指针10.4字符串与指针10.5指向函数的指针10.6返回指针值的函数10.7指针数组和指向指针的指针10.8有关指针的数据类型和指针运算的小结√√√√√√√√11.结构体与共用体11.1概述11.2定义结构体类型变量的方法11.3结构体变量的引用11.4结构体变量的初始化11.5结构体数组11.6指向结构体类型数据的指针11.7用指针处理链表11.8共用体11.9枚举类型11.10用typedef定义类型√√√√√√√√√√√12.位运算12.1位运算符和位运算12.2位运算举例12.3位段√√√13.文件13.1C文件概述13.2文件类型指针13.3文件的打开与关闭13.4文件的读写13.5文件的定位√√√√√四、课程实施C语言程序设计是计算机类专业必修课,根据我系教学计划,本科每周安排4课时,共72课时,其中理论教学54课时,实验18课时,教学安排如下:课时安排及教学方法表教学内容课时建议教与学的方法建议72课时1.C语言概述1.1C语言出现的历史背景1.2C语言的特点1.3简单的C语言程序介绍1.4运行C程序的步骤与方法理论4课时讲述2.程序的灵魂——算法2.1算法的概念2.2简单算法举例2.3算法的特性2.4怎样表示一个算法2.5结构化程序设计方法理论2课时讲述3.数据类型、运算符与表达式3.1C语言的数据类型3.2常量与变量3.3整型数据3.4浮点型数据3.5字符型数据3.6变量赋初值3.7各类数值型数据间的混合运算3.8算术运算符和算术表达式3.9赋值运算符和赋值表达式3.10逗号运算符和逗号表达式理论4课时,实验2课时讲述、演示和实验教学内容课时建议教与学的方法建议72课时4.最简单的C程序设计——顺序程序设计4.1C语句概述4.2赋值语句4.3数据输入输出的概念及在C语言中的实现4.4字符数据的输入输出4.5格式输入与输出4.6顺序结构程序设计举例理论4课时,实验2课时讲述、演示和实验5.选择结构程序设计5.1关系运算符和关系表达式5.2逻辑运算符和逻辑表达式5.3if语句5.4switch语句5.5程序举例理论6课时,实验2课时讲述、演示和实验6.循环控制6.1概述6.2用while语句实现循环6.3用do-while语句实现循环6.4用for语句实现循环6.5循环的嵌套6.6几种循环的比较6.7break语句和continue语句6.8程序举例理论6课时,实验2课时讲述、演示和实验7.数组7.1一维数组的定义和引用7.2二维数组的定义和引用7.3字符数组理论4课时,实验2课时讲述、演示和实验8.函数8.1概述8.2函数定义的一般形式8.3函数参数和函数的值8.4函数的调用8.5函数的嵌套调用8.6函数的递归调用8.7数组作为函数参数8.8局部变量和全局变量8.9变量的存储类别8.10内部函数和外部函数理论6课时,实验2课时讲述、演示和实验9.预处理命令9.1宏定义9.2“文件包含”处理9.3条件编译理论2课时讲述教学内容课时建议教与学的方法建议72课时10.指针10.1地址和指针的概念10.2变量的指针和指向变量的指针变量10.3数组与指针10.4字符串与指针10.5指向函数的指针10.6返回指针值的函数10.7指针数组和指向指针的指针10.8有关指针的数据类型和指针运算的小结理论6课时,实验2课时讲述、演示和实验11.结构体与共用体11.1概述11.2定义结构体类型变量的方法11.3结构体变量的引用11.4结构体变量的初始化11.5结构体数组11.6指向结构体类型数据的指针11.7用指针处理链表11.8共用体11.9枚举类型11.10用typedef定义类型理论8课时,实验2课时讲述、演示和实验12.位运算12.1位运算符和位运算12.2位运算举例12.3位段理论2课时讲述13.文件13.1C文件概述13.2文件类型指针13.3文件的打开与关闭13.4文件的读写13.5文件的定位理论2课时讲述合计:72课时中含理论课54课时,实验课18课时五、教材编写与选用教材:[1]谭浩强,《C程序设计》(第三版),清华大学出版社,2005年参考书目:[1]谭浩强,《C程序设计题解与上机指导》(第三版),清华大学出版社,2005年[2]谭浩强,《C程序设计试题汇编》,清华大学出版社,1998年[3](美)科汉,《C语言程序设计》(英文版·第3版),人民邮电出版社,2006年[4]何钦铭,颜晖,《C语言程序设计》,浙江科学技术出版社,2004年[5]颜晖,《C语言学习及实践指导》,浙江科学技术出版社,2005年六、学习评价与考核1.这门学科的评价依据是本课程标准规定的课程目标、教学内容和要求。2.考试时间:120分钟。3.考试方式、分制与分数解释采用闭卷、笔试与上机考核相结合的方式,均以百分制评分,60分为及格,满分为100分,考试成绩=期末考试成绩X70%+平时成绩X30%。4.题型比例单选题20%;填空题10%;阅读程序写出结果题20%;补充程序题20%;程序设计题30%。5.样题与目标定位示例A.单选题:(着重考查学生对知识的识别程度)(1)、判断一个整数n能否同时被3和5整除,下面写法正确的是:(a)if(n%3==0&&n%5==0)(b)if(n%3==0||n%5==0)(c)if(n/3==0&&n/5==0)(d)if(n%15!=0)B.填空题:(着重考查学生对知识的理解程度)(1)、C语言参数传递的两种方式是和;(2)、在向函数传递数组时,接收数组指针的形式参数可以说明为或;C.阅读程序写出结果题:(着重考查学生对程序的理解能力)4、#includestdio.hmain(){inta[3][3]={11,12,13,14,15,16,17,18,19},j;Longm=1;for(j=0;j3;j++)m=m*a[j][j];printf(“m=%d“,m);}输出结果:}D.程序阅读及补充程序题:(着重考查学生对知识的理解与掌握程度)(1)、#include“stdio.h”main(){intsum=0,k=1;do{sum=sum+k;k++;}while(k=10)printf(“%d”,sum);}输出结果:(2)、下面程序是采用选择法对数组中的n个数按升序进行排序,请在空格处补充完整。voidsort(inta[],intn){intj,k,p,t;for(j=0;j①;j++){p=j;for(k=②;kn;k++)if(a[k]a[p])③;if(p!=j){t=a[p];a[p]=a[j];a[j]=t;}}}E.程序设计题:(着重考查学生对知识的掌握程度与编程能力)(1)、有15个学生,每个学生的数据包括学号(num),姓名(name[10]),性别(sex),年龄(age),三门课成绩(score[3]),要求编一程序,输入学生的数据,并计算出每个学生的三门课的总分和平均分,然后输出所有学生的各项数据。(2)、已知一数组中存有1000个int型数据,要求编写一函数,求出其中第二大的数据。在计算过程中,要求保持原数组不变。制定该课程标准小组成员:审核者: