1、程序设计语言课程教学大纲(Programming Language)制定单位:信息科学学院信息管理系制 定 人:米天胜审 核 人:江效尧(课程组长)编写时间:2013年12月9日第一部分 课程概述一、基本信息(一)课程代码 07300420(二)课程属性、学分、学时学科基础课,4学分,总课时108课时,期中课堂教学72课时,实验教学36课时。(三)适用对象适用信息管理与信息系统专业本科生(四)先修课程与知识准备信息管理技术基础二、课程简介C语言是一种通用的程序设计语言,它的产生与设计开发它的UNIX操作系统密切相关。因为UNIX操作系统本身以及在该系统上运行的许多程序就是用C编写的。然而,目前
2、C语言不再局限于某个操作系统或某种机器,它既可以用来编写编译程序和操作系统,也可以用来编写不同领域的应用程序。本课程的主要内容包括语言的发展历史与特点综述;算法的基本概念、算法的各种表示方法、结构化程序设计方法;语言的基本数据类型、运算符与表达式;基本输入输出函数与顺序结构的程序设计;选择结构与循环结构的程序设计;数组;函数;预处理命令;指针;结构体与共用体;位运算;文件。 C is a general-purpose programming language. It has been closely associated with the UNIX system where it was d
3、eveloped,since both the system and most of the programs that run on it are written in C. The language , however, is not tied to any one operating system or machine; and it is useful for writing compilers and operating systems, it has been used equally well to write major programs in many different d
4、omains. The main contents of this course includes: C-profile, characteristics and algorithm concepts. the basic C language data types, operators, expressions, three basic structures of programming., constructed data types (arrays, structures, etc.), function and preprocessing directive and the point
5、er, bitwise and file.三、教学目标本课程以C语言为对象,着重介绍程序设计的思想和方法。程序设计语言是一门既有理论但实践性又很强的课程,要求学生既要掌握有关基本概念和基础理论,又要动手上机练习编程,通过大量的反复实验,提高阅读程序、理解程序以及编写程序的能力。该课程的教学目标是通过理论和实践教学使学生掌握程序设计的基本方法、思路和技术内涵,培养学生应用计算机程序设计语言解决实际问题的能力。通过教学,使学生不但掌握高级编程语言的知识、编程技术和有关基本算法,更重要的是掌握程序设计的思想和方法,具备利用计算机求解实际问题的基本能力,也为后续相关课程的进一步学习打下坚实的基础。四、
6、师资团队江效尧 课程组长 本科副教授,13072548209 位育楼519孙玉星 成 员硕士 讲师 ,13182978418 竟慧西401陈一飞成 员博士 讲师 ,13770682463 位育楼519谷瑞军 成 员 博士 讲师; ;15951907923 竟慧西401米天胜 成 员 硕士 副教授 ;58318609 竟慧西417五、教学资源【1】谭浩强编著.C程序设计(第四版).清华大学出版社,2010【2】谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,2010【3】(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版
7、社,2010【4】(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,2008【5】(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005ACM竞赛在线裁判:【1】上海大学的在线裁判系统:http:/ 教学时间分配表授课章节与内容摘要教学时数备注作业,实验等第一章 1.11.5简单C程序介绍,VC上机步骤第二章 2.12.5算法的概念,举例,特性, 算法表示,结构化程序设计方法 6实验一:C语言的运行环境和运行过程P15 5/6第三章3.13.2C的数据类型,常量与变量, 整型数据,实型数据,字符型数据,运算符与
8、表达式6实验二:数据类型、运算符和简单的输入输出P36 5/6/8第三章3.33.4 C语句概述,赋值语句,数据输入输出的概念,字符数据的输入输出,格式输入与输出6实验三 顺序程序设计P84 6/8第四章 4.14.8关系运算符和关系表达式,逻辑运算符和逻辑表达式,IF语句 SWITCH 语句, 程序举例6实验四 选择结构程序设计P113 8/9/10第五章 5.15.8 WHILE 语句,DO-WHILE 语句 FOR语句,BREAK语句 ,CONTINUE语句, 循环比较与嵌套, 程序举例6实验五 循环结构程序设计P140 4/6/8/9第六章 6.16.2一维数组与二维数组的定义和引用6
9、实验六 一维数组第六章6.3字符数组6实验六 二维数组 P168 6/10/11/15第七章7.17.4函数定义的形式,函数参数与函数的值,函数的调用 6实验七 函数(一)第七章7.57.7函数的嵌套与递归调用,数组作为函数的参数 6实验七 函数(二)第七章7.8-7.11局部变量和全局变量,存储类别,内部函数与外部函数6实验七 函数(三)P218 3/11/14第八章8.18.2指针的概念,指向变量的指针变量6实验八指针(一)第八章8.38.6数组的指针, 字符串指针函数指针,返回指针值的函数 6实验八指针(二)第八章8.78.8指向指针的指针,指针小结 6实验八指针(三)P291 3/15
10、第九章 9.19.3结构体变量的定义、引用、初始化,结构体数组、指向结构体的指针 6实验九结构体(一)第九章9.4用指针处理链表6实验九结构体(二)第九章9.59.7共用体、枚举和typedef6实验九结构体(三)P330 5/10第十章 10.110.2 C文件概述,文件指针,文件的打开与关闭文件,文件的读写 6实验十二文件操作(一)第十章10.310.4顺序读写文件和随机读写文件、总复习 6实验十二文件操作(二)P354 3/4/5第三部分 教学要求及教学要点第一章 程序设计和C语言【安排课时】3课时【本章教学目的和要求】1、了解C语言的发展历史、C语言的主要特点。2、掌握C语言程序的结构
11、,C语言程序的书写格式,C语言程序的开发过程,Turbo C或VC的集成开发环境的使用。【本章重点、难点】1、重点:C语言程序的结构及书写格式,C语言程序的开发过程,Turbo C/VC集成开发环境的使用。2、难点: C语言程序的开发过程,Turbo C/VC集成开发环境的使用。第一节 什么是计算机程序第二节 什么是计算机语言 第三节 C语言的发展及其特点 第四节 最简单的C语言程序一、最简单的C语言程序举例二、C语言程序的结构第五节 运行C程序的步骤与方法第六节 程序设计的任务【本章课后复习思考题】1、请参照本章例题,编写一个C程序,输出以下信息: * Very Good! * 2、编写一个
12、程序,输入a、b、c三个值,输出其中最大值。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第二章 算法程序的灵魂【安排课时】3课时【本章教学目的和要求】掌
13、握怎样表示一个算法、掌握结构化程序设计方法【本章重点、难点】1、重点:怎样表示一个算法2、难点:结构化程序设计方法第一节 什么是算法 第二节 简单的算法举例第三节 算法的特性第四节 怎样表示一个算法一、用自然语言表示算法二、用流程图表示算法三、三种基本结构和改进的流程图四、用NS流程图表示算法五、用伪代码表示算法六、用计算机语言表示算法第五节 结构化程序设计方法【本章课后复习思考题】1、用N-S图表示下列各题的算法。(1)依次将10个数输入,要求输出其中最大的数。(2)判断一个数能否同时被3和5整除。(3)将100200之间的素数输出。(4)求两个数m和n的最大公约数。2、用伪代码表示第1题中
14、各题的算法。3、用自顶向下、逐步细化的方法进行一下算法的设计:(1)输出19002000年中是闰年的年份。(2)求ax2+bx+c=0的根。分别考虑d=b2-4ac大于0、等于0和晓宇0这三种情况。(3)输入10个数,输出其中最大的一个数。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清
15、华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第三章 最简单的C程序设计顺序程序设计【安排课时】12课时【本章教学目的和要求】1、掌握常量与变量、掌握变量赋初值和各种数值型数据间的混合运算2、掌握各种表达式3、掌握putchar、getchar、printf和scanf函数的使用4、掌握顺序结构程序的设计【本章重点、难点】1、重点:各种数值型数据间的混合运算、putchar、getchar、printf和scanf函数的使用、顺序结构程序的设计2、难点:putchar、getchar、printf和scanf
16、函数的使用、顺序结构程序的设计第一节 顺序程序设计举例第二节 数据的表现形式及其运算一、常量和变量二、数据类型三、整型数据四、字符型数据五、浮点型数据六、怎样确定常量的类型七、运算符和表达式第三节 C语句一、C语句的作用和分类二、最基本的语句赋值语句第四节 数据的输入输出一、输入输出举例二、有关数据输入输出的概念三、用printf函数输出数据四、用scanf函数输入数据五、字符数据的输入输出【本章课后复习思考题】1、要将China译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母例如,字母A后面第4个字母是EE代替A。因此,China应译为Glmre。请编一程序,用赋初值的方法使c
17、l、c2、c3、c4、c5五个变量的值分别为,C、h、i、n、a,经过运算,使c1、c2、c3、c4、c5分别变为G、l、m、r、e,分别用putchar函数和printf函数输出这5个字符。2、编程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar和printf函数输出这两个字符。思考一下问题:(1)变量c1和c2应定义为字符型还是整型,或两者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用?(3)整型变量与字符型变量是否在任何情况下都可以互相代替?如:char c1,c2;与int c1,c2;是否无条件等价?【本章课后学习阅读资料】1、谭浩强编著.C
18、程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第四章 选择结构程序设计【安排课时】6课时【本章教学目的和要求】1、掌握关系运算符和逻辑运算符2、掌握选择结构程序的设计【本章重点、难点】1、重点:i
19、f语句、switch语句的使用2、难点:if语句、switch语句在选择结构程序设计中的灵活运用第一节 选择结构和条件判断第二节 用if语句实现选择结构一、用if语句处理选择结构举例二、if语句的一般形式 第三节 关系运算符和关系表达式一、关系运算符及其优先次序二、关系表达式第四节 逻辑运算符和逻辑表达式一、逻辑运算符及其优先次序二、逻辑表达式三、逻辑型变量第五节 条件运算符和条件表达式第六节 选择结构的嵌套 第七节 用switch语句实现多分支选择结构第八节 选择结构程序综合举例【本章课后复习思考题】1、给一个百分制成绩,要求输出等级A、B、C、D、E。90分以上为A,8090分为B,707
20、9分为C, 6069分为D,60分以下为E。2、给定一个不多于5位的正整数,要求: 求它是几位数; 分别打印出每一位数字; 按逆序打印出各位数字。例如原数为321,应输出123。3、企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000I200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;200000I400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;4000001000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用
21、if语句编程序;(2)用switch语句编程序。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第五章 循环结构程序设计【安排课时】6课时【本章教学目的和要
22、求】1、掌握while、do while和for 三种循环结构、循环的嵌套2、break语句和continue语句 【本章重点、难点】1、重点:while、do while和for 三种循环结构2、难点:for循环和循环嵌套第一节 为什么需要循环控制第二节 用while语句实现循环第三节 用dowhile语句实现循环第四节 用for 语句实现循环第五节 循环的嵌套第六节 几种循环的比较第七节 改变循环执行的状态一、用break语句提前终止循环二、用continue语句提前结束本次循环三、break语句和continue语句的区别第八节 循环程序举例【本章课后复习思考题】1、输入一行字符,分别统
23、计出其中英文字母、空格、数字和其他字符的个数。2、求1!+2!+3!+4!+5!+20!3、打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。4、一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6itsfactorsare1、2、3 【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103
24、、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第六章 利用数组处理批量数据【安排课时】12课时【本章教学目的和要求】1、掌握一维数组、二维数组的定义、初始化和引用2、掌握字符数组元素的引用和初始化、掌握数组应用程序设计【本章重点、难点】1、重点:一、二维数组的使用、字符数组元素的引用和初始化2、难点:二维数组的
25、使用、数组应用程序设计第一节 怎样定义和引用一维数组一、怎样定义一维数组二、怎样引用一维数组元素三、一维数组的初始化四、一维数组程序举例第二节 怎样定义和引用二维数组一、怎样定义二维数组二、怎样引用二维数组的元素三、二维数组的初始化四、二维数组程序举例第三节 字符数组一、怎样定义字符数组二、字符数组的初始化三、怎样引用字符数组中的元素四、字符串和字符串结束标志五、字符数组的输入输出六、使用字符串处理函数七、字符数组应用举例【本章课后复习思考题】1、打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 2、有一篇文章,共有3行文字,每行有个80字符
26、。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。3、打印以下图案 4、编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,0也要拷贝过去,0后面的字符不拷贝。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,2008
27、5、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第七章 用函数实现模块化程序设计【安排课时】18课时【本章教学目的和要求】1、掌握函数定义的一般形式2、掌握函数的(递归)调用、数组作为函数参数3、掌握局部变量和全局变量【本章重点、难点】1、重点;函数的调用、数组作为函数参数、局部变量和全局变量2、难点:函数调用(参数传递和形实参结合)、静态局部变量和全局变量第一节 为什么要用函数第二节 怎样定义函数一、为什么要定义函数二、定义函数的方法第三节 调用函数一、函数调用的形式二、函数调用时的数据传递三、函数调用的过程四、函数的返回值第四节
28、 对被调用函数的声明和函数原型第五节 函数的嵌套调用第六节 函数的递归调用第七节 数组作为函数参数一、数组元素作函数实参二、数组名作函数参数三、多维数组名作函数参数第八节 局部变量和全局变量一、局部变量二、全局变量第九节 变量的存储方式和生存期一、动态存储方式与静态存储方式二、局部变量的存储类别三、全局变量的存储类别四、存储类别小结第十节 关于变量的声明和定义第十一节 内部函数和外部函数一、内部函数二、外部函数【本章课后复习思考题】1、写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。2、写一函数用“起泡法”对输入的10个字符按由小到大的顺序排列。3、输入10个学生5门课的成绩
29、,分别用函数求:每个学生平均分;每门课的平均分;找出最高分所对应的学生和课程;求平均分方差:=,其中xi为某一学生的平均分。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电
30、出版社,2005第八章 善于利用指针【安排课时】18课时【本章教学目的和要求】1、掌握指针的含义、指针(变量)的定义及指针的引用2、掌握数组与指针、掌握字符串与指针3、掌握指向函数的指针、掌握返回指针值的函数【本章重点、难点】1、重点;变量的指针和指向变量的指针变量、返回指针值的函数2、难点:数组与指针、字符串与指针、指向数组和指向指针的指针 第一节 指针是什么第二节 指针变量一、使用指针变量的例子二、怎样定义指针变量三、怎样引用指针变量四、指针变量作为函数参数第三节 通过指针引用数组一、数组元素的指针二、在引用数组元素时指针的运算三、通过指针引用数组元素四、用数组名作函数参数五、通过指针引用
31、多维数组第四节 通过指针引用字符串一、字符串的引用方式 二、字符指针作函数参数三、使用字符指针变量和字符数组的比较第五节 指向函数的指针一、什么是函数指针二、用函数指针变量调用函数三、怎样定义和使用指向函数的指针变量四、用指向函数的指针作函数参数第六节 返回指针值的函数 第七节 指针数组和多重指针一、什么是指针数组 二、指向指针数据的指针三、指针数组作main函数的形参第八节 动态内存分配与指向它的指针变量一、什么是内存的动态分配二、怎样建立内存的动态分配三、void指针类型 第九节 有关指针的小结【本章课后复习思考题】1、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对
32、换。写三个函数;输入10个数;进行处理;输出10个数。2、有一个班4个学生,5门课程。求第1门课程的平均分找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编写3个函数实现以上三个要求。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标
33、准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第九章 用户自己建立数据类型【安排课时】18课时【本章教学目的和要求】1、掌握定义结构体类型变量的方法、结构体变量的引用和初始化2、掌握枚举类型和用typedef定义类型【本章重点、难点】1、重点:结构体变量的引用和初始化、结构体指针2、难点:结构体变量的引用和初始化、用指针处理链表第一节 定义和使用结构体变量一、自己建立结构体类型二、定义结构体类型变量 三、结构体变量的初始化和引用第二节 使用结构体数组一、定义结构体数组二、结构体数组
34、的应用举例第三节 结构体指针一、指向结构体变量的指针二、指向结构体数组的指针三、用结构体变量和结构体变量的指针作函数参数第四节 用指针处理链表一、什么是链表 二、建立简单的静态链表三、建立动态链表四、输出链表第五节 共用体类型一、什么是共用体类型二、引用共用体变量的方式三、共用体类型数据的特点第六节 使用枚举类型第七节 用typedef声明新类型名【本章课后复习思考题】1、有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)2、已有a、b两个链表,每个链表中的结点包括学号、成绩。
35、要求把两个链表合并,按学号升序排列。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005第十章 对文件的输入输出【安排课时】12课时【本章教学目的和要求】1、理
36、解文件的含义和分类2、掌握文件的基本操作:打开与关闭、读写、定位【本章重点、难点】1、重点;文件的打开与关闭、文件的读写、文件定位2、难点:文件的读写和定位第一节 C文件的有关基本知识一、什么是文件二、文件名三、文件的分类四、文件缓冲区五、文件类型指针第二节 打开与关闭文件一、用fopen函数打开数据文件二、用fclose函数关闭数据文件第三节 顺序读写数据文件一、怎样向文件读写字符二、怎样向文件读写一个字符串三、用格式化的方式读写文件四、用二进制方式向文件读写一组数据第四节 随机读写数据文件一、文件位置标记及其定位二、随机读写 第五节 文件读写的出错检测【本章课后复习思考题】1、从键盘输入一
37、个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以“!”结束。2、有两个磁盘文件”A”和”B”,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件”C”中。3、有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。【本章课后学习阅读资料】1、谭浩强编著.C程序设计(第四版).清华大学出版社,20102、谭浩强编著.C程序设计(第四版)学习辅导.清华大学出版社,20103、(美)Brian W.Kernighan,Dennis M.Ritchie著.C程序设计语言(第2版).机械工业出版社,20104、(印)E Balagurusamy著.标准C程序设计(第4版). 清华大学出版社,20085、(美)Stephen Prata著. C Primer Plus(第五版)中文版.人民邮电出版社,2005