




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术专业C+语言基础教程教学大纲信息技术学院2009年2月编写说明C语言是目前世界上最流行和实用的一种计算机高级程序设计语言,它具有丰富的数据类型和各种运算功能,带有庞大的函数库和类库,既支持面向过程的程序设计,又支持面向对象的程序设计,因此是目前进行计算机软件开发的主要工具之一,正在成为普通高等院校开设程序设计课程的首选语言。C语言基础教程在计算机科学中是一门基础课程,它将为数据结构、操作系统、软件工程、面向对象程序设计、计算机网络等所有后续课程打下坚实的计算机语言和程序设计的基础。C语言基础教程目前尚无全国性统编教学大纲,为了规范教学,提高教学质量,在参考其他兄弟院校相关教学大纲的基础上,编写了本大纲。本大纲的编写目的除了给出教学时应参考的教学目的、教学重点和难点外,也在大纲中提供了各个章节的内容要点,以为读者学习时提供指导。学习C+语言的最好办法是上机实践,掌握C+语言的语言规范并不等于掌握了C+语言。C+语言十分灵活,要在实践中不断提高应用水平。C语言基础教程作为一门专业技术基础课程,其内容适合于计算机科学与技术专业、信息管理与信息技术专业以及相关专业的本科生和专科生使用。本大纲编写人:梁晓林。本大纲修订时间:二OO九年二月课时分配表 课程总时数:68学时章 目内 容讲课时数上机时数第一章C+语言概述22第二章数据类型和表达式5第三章流程控制语句72第四章数组与字符串84第五章指针74第六章函数82第七章结构与联合4 第八章类与对象4第九章类的继承与多态性4第十章C+流32合计5216目录第一章 C+语言概述11.1 引言11.2 C+字符集11.3 C+单词11.4 C+语句11.5 C+函数21.6 C+程序21.7 VC+6.0集成开发环境简介2第二章 数据类型和表达式32.1 数据类型32.2 常量32.3 变量32.4 运算符42.5 函数4第三章 流程控制语句(选择、循环、跳转)53.1 if语句条件语句53.2 switch语句-开关语句、情况语句63.3 for语句63.4 while语句63.5 do语句63.6 跳转语句6第四章 数组与字符串74.1 数组的概念74.2 数组的定义74.3 数组的应用84.4 字符串8第五章 指针95.1 指针的概念95.2 指针变量95.3 指针运算95.4 指针与数组105.5 引用变量105.6 动态存储分配10第六章 函数116.1 函数的定义116.2 函数的调用116.3 变量的作用域116.4 递归函数126.5 函数重载126.7 函数指针12第七章 结构与联合137.1 结构的定义137.2 结构变量的定义和初始化137.3 结构成员的访问操作147.4 使用结构的程序举例147.5 结构与函数157.6 结构与链表157.7 结构与操作符重载157.8 联合15第八章 类与对象168.1 类的定义168.2 构造函数168.3 析构函数168.4 友元函数和友元类16第九章 类的继承与多态性179.1 类的继承179.2 类的虚函数与多态性179.3 类的静态成员179.4 类模板17第十章 C+流1810.1 C+流的概念1810.2 输入输出格式控制1810.3 文件操作1810.4 字符串流18主要参考书19IV第一章 C+语言概述【教学目的和要求】本章是全书的综述,要求学生了解C+语言出现的历史背景、当前发展概况、C+语言的特点等内容;掌握C+语言程序的格式、上机环境和程序的编译执行。【教学重点】C+语言程序的格式。【教学难点】VC+语言程序的上机环境和程序的调试方法。【教学方法】讲授为主,通过上机熟悉VC+集成开发环境。【思考题】1. 一个标识符中的首字符必须是什么字符?其余位置上的字符必须是什么字符?2. C+语言分为哪几类?3. 上机运行一个程序需要经过哪些阶段?【讲授内容】1.1 引言C+语言是目前世界上公认的最流行、最实用的高级语言;它是对C的继承和扩展;是既面向过程又面向对象的语言。本书是以Visual C+6.0为蓝本和操作界面的。1.2 C+字符集同自然语言一样,具有字、词、句、章的基本成分和结构,C+具有规定的字符集,其中包括:英文字母、数字符号、标点符号、运算符、特殊符号等。1.3 C+单词由C+字符按照一定的组词规则构成的C+单词。其中包括:保留字、标识符、常量、运算符、标点符号等。1.4 C+语句单词按照一定的语法规则排列起来形成语句。除复合语句外,必须以分号结束。C+语句有类型定义语句、变量定义语句、函数原型语句、表达式语句、复合语句、选择语句、循环语句、跳转语句等。1.5 C+函数函数是指能够完成某一功能的功能模块。C+函数分为系统函数和用户函数。系统函数由C+系统提供,用户可以直接使用;用户函数是指由编程者(用户)在程序中编写具有相对独立功能的模块。函数定义格式: 函数类型 函数标识符 ( 参数表 ) 函数体。主函数: 每个程序有且仅有一个,一般格式为:void main(void) 语句 1.6 C+程序一个C+程序是由:一个主函数和若干个用户函数等组成的一个或多文件,每个扩展名为.cpp。C+程序可以有注释一提高程序的可读性,格式为:/ 注释内容;或/* 注释内容 */。1.7 VC+6.0集成开发环境简介根据实际问题编写程序。开发程序的过程可以分别在程序编辑窗口、编译状态输出窗口、输出显示窗口来完成程序的输入、编辑、连接和运行。第二章 数据类型和表达式【教学目的和要求】本章是C+语言的基础内容,要求学生了解C+语言指针数据类型、空类型、构造数据类型的初步用法;掌握C+语言基本数据类型的用法、数据类型的混合运算及类型转换;掌握C+语言常见运算符的用法、运算符的优先级和结合性。【教学重点】C+语言基本数据类型的用法,常见运算符的用法。【教学难点】数据类型的混合运算及类型转换,运算符的优先级和结合性、自增和自减运算。【教学方法】讲授为主。【思考题】1. C+数据分为哪四种大的类型?2. 每一种C+具体类型的关键字是什么?3. 转义字符序列中的首字符是什么字符?4. 定义符号常量和变量的语句有什么异同?【讲授内容】2.1 数据类型C+语言的数据类型可以分成系统预定义数据类型和用户自定义数据类型;也可以分成简单(单值)类型和复杂(多值)类型。其中,简单(单值)类型:int, char, bool, float(4), double, int*,int&,void,enum ;复杂(多值)类型:整型,字符型,逻辑型bool,枚举型enum。2.2 常量一、 整型(int)常量:十、八、十六进制二、 字符(char)常量:有一般和转义表示两种三、 枚举常量: enum colorred, yellow, blue;定义之后就可以引用这三个枚举常量四、 实型常量(实数):两种表示l 定点表示:12.0, -3.56, .06 l 浮点表示:2.45e6, -30E7, 4e-12 ,即“定点数+E(或e)+指数”科学技术法五、地址常量(指针常量)2.3 变量1变量定义语句:类型关键字 变量标识符 =初值表达式, ;2符号常量定义语句:与变量定义类似,const为符号常量开头的关键字const 类型关键字 常量标识符 =初值表达式, ;2.4 运算符1. 运算符:分为单目、双目、三目,每组均有优先级与结合性的问题,优先级共分为16个级别,结合性分为左结合和右结合两种。 双目算术运算符:+, -, *, /, % 赋值运算符:一般赋值和复合赋值运算符,其结合性从右向左 增1(+)和减1(- -)运算符 求类型或数据长度运算符:sizeof() 强制类型转换:通过类型关键字,转换成指定的类型 关系运算符6个:, =, , &-|) 条件运算符(三目运算):xy? z=x: z=y;等价于 z=(xy? x:y); 逗号运算符 a+, b+, c- ; 圆括号运算符 x/(y+2) (用来改变优先级,可以帮助更好的理解表达式)2. 表达式:由操作数和运算符进行有效连接而成的式子;可以分为一般表达式、函数调用表达式;一般表达式:数值表达式,关系表达式、逻辑表达式,后两者为逻辑值;表达式计算:按运算符的结合性和优先级计算。2.5 函数 常用数学函数(在math.h中有函数原型说明):abs(a), fabs(x), sin(x), con(x), tan(x), sqrt(x), exp(x), pow(x,y), log(x) lnx, floor(x),ceil()等 随机函数(stdlib.h):rand(),srand(s) 终止运行函数(stdlib.h):exit(1) 执行时正常结束程序执行,返回C+主操作界面窗口;exit(0) 执行时非正常结束函数调用或称函数调用表达式: 函数名 ( 实参表 )第三章 流程控制语句(选择、循环、跳转)【教学目的和要求】本章既是C+语言的基础内容,又是全书的重点内容,因为本章主要讲述程序执行语句,是将来我们编写程序的基础。本章要求学生掌握C+语言主要程序执行语句的用法。【教学重点】C+语言主要程序执行语句的用法。【教学难点】三类循环语句的用法。【教学方法】讲授与上机相结合。【思考题】1. 比较三类循环语句的功能和使用场合。2. 结合课后大量程序实例加以练习,完成课后作业。【讲授内容】3.1 if语句条件语句一、 if语句语句格式:1、 if (表达式) 语句; 2、 if (表达式) 语句;else 语句;注意:else子句不能单独使用;“语句;”可以是任何类型的语句;构成复合语句(用 括起来的语句)的条件是什么;书写时要注意格式。二、 if语句的嵌套1、 if (表达式1) 语句1;else if (表达式2) 语句2;else if (表达式3) 语句3;else if (表达式n) 语句n;else 表达式n+1;2、if (表达式1) if (表达式2) if (表达式n) 语句n; else 语句n; else 语句2;else 语句1 ;3.2 switch语句-开关语句、情况语句一、 语句格式switch(条件表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;default 语句n+1;break;二、 注意事项1、 case中break;语句的功能。2、 default部分的功能。3、 若干个case所执行的内容相同时,如何办?4、 所有常量表达式的值必须互不相同;case与default的顺序可以自由书写;最后的break;可以省略。3.3 for语句语句格式:for ( 表达式1 ; 表达式2 ; 表达式3 ) 语句3.4 while语句语句格式: while ( 条件表达式 ) 语句3.5 do语句语句格式: do 语句 while (表达式);3.6 跳转语句1. goto 语句格式:goto 语句标号;2. continue语句 只能用在循环语句中,用来终止本次循环3. break语句只能用在循环和switch语句中,用来终止整个循环4. return语句 返回语句第四章 数组与字符串【教学目的和要求】本章是C+语言中较重要的内容,要求学生掌握C+语言中一维、多维数组的定义和引用、字符串的处理。【教学重点】一维、二维数组的定义和引用。【教学难点】如何利用数组处理字符串。【教学方法】讲授与上机相结合。【思考题】1. 数组如何在内存中进行存储的,其存储长度如何计算?2. 字符串与数组具有何联系?如何存储?3. 数组都有哪些具体的应用?【讲授内容】4.1 数组的概念数组:具有相同数据类型的一组数据。按照数据之间的结构数组有一维、二维、三维等。数组元素是指数组中的一个数据,用数组名和下标来表示。数组长度是指数组中所含元素的个数,由应用需要而定(1)。例如定义:int a10; 说明:下标从0开始,10代表数组长度。4.2 数组的定义数组需要“先定义,后使用”。一、 一维数组的定义:类型名 数组名 常量表达式 =初始化数据表;定义数组,系统将在内存中为它分配一块含有n个存储单元的连续存储空间,每个存储单元包含的字结束等于元素类型的长度。下标变量,即数组元素:数组名 下标表达式 二、 二维数组的定义:类型名 数组名 常量式1 常量式2 =初值表1, 初值表2, ;双下标变量, 即二维数组元素的表示,语法格式:数组名 行下标式 列下标式 二维数组元素按“行”存储。例如定义: int a34;a00 a01 a02 a03a10 a20 a234.3 数组的应用数组的应用非常广泛:第一方面:利用数组进行数值计算;第二方面:利用数组进行统计;第三方面:数据排序;第四方面:查找数据。4.4 字符串1. 字符串的概念: 字符串是指用双引号括起来的一串字符,字符串中双引号内所包含字符的个数称为字符串的长度。字符串通常是用一维字符数组存储,系统也需要为字符串分配一个空间来存储,无论是用户,还是系统存储,均必须在字符串最后存储一个空字符0作为字符串的结束。字符串既可以通过下标变量输入和输出,也可以进行整体输入和输出。2. 字符串函数:是对字符串进行操作的一组函数。其原型说明位于头文件string.h 中。其中有求长度函数 strlen(a)、字符串拷贝 strcpy(c,a)、字符串连接 strcat(c,b)、字符串比较 strcmp(a,b)等。第五章 指针【教学目的和要求】本章是C+语言中非常重要的一部分内容,是C+语言的精华所在。要求学生非常熟练地掌握C+语言中指针变量的定义、作用和各种使用方法。【教学重点】指针的定义和引用。【教学难点】利用指针处理字符串、指针在函数中的应用。【教学方法】讲授与上机相结合。【思考题】1. 区分指针和指针变量的含义。2. 区分两个运算符:*(指针运算符) 和 &(取地址运算符)。3. 区分下列表示方法:(&a, p, &*p)和(a, *&a)。【讲授内容】5.1 指针的概念指针是指计算机内部存储器中一个存储字节的地址。一个变量的(起始)地址称为该变量的指针。在C+中每个指针都与一个具体的数据类型相联系,即每个指针为内存中存储该类型的一个数据的地址,具体为存储该数据所占用存储空间的首字节地址。5.2 指针变量指针变量:存放另一个变量的地址的变量。 一、指针变量的定义格式:(同普通变量)类型名 * 变量名 =初值表达式,;如:int a, *p; p=&a; 或 int a, *p=&a;三、 指向常量的指针:定义的指针所指向的对象是常量,是不可修改的。定义格式为:const 类型名 * 常量指针名 =初值表达式;四、 指针常量: 指针不能被修改,所指对象能修改,即指针不可再指向其它对象,但它所指向的对象是可以修改的。定义格式为:类型名 * const 常量指针名 =初值表达式;5.3 指针运算指针运算包括赋值(=)、取地址(&) 、间接访问(*)、增1(+)和减1(-)、加(+)和减(-)、加赋值(+=)和减赋值(-=)、比较(=,!=,=)。注意区分两个运算符:*(指针运算符) 和 &(取地址运算符);区分下列表示方法:(&a, p, &*p)和(a, *&a)。5.4 指针与数组1. 指针与一维数组一维数组名是指向该数组第一个元素的指针,为指向元素的指针类型。2. 指针与二维数组可以把二维数组看作为一维数组的嵌套:例如定义char a510; 二维数组可看作char10类型的一维数组a5, 其值为指向该一维数组的指针;而一维数组a5 的每个元素为ai10,为char类型的数据。数组名是指针常量:a, a0, &a00值相同,但类型不同,a是字符数组指针类型 char (*)10,a0, &a00均为字符指针类型 char *5.5 引用变量引用变量同一般的变量,只是加了一个&号。定义格式:类型名 & 引用变量名 = 已有同类变量;引用主要用途用于定义函数参数:如:int Add(int &x, int &y) return x+y;int a=5, b=8, c; c=Add(a, b);5.6 动态存储分配1. 变量的静态分配:指变量定义语句定义的变量,在编译阶段由系统分配存储空间。 2. 变量的动态分配: 在运行阶段,执行new运算时进行的存储分配,是在程序运行阶段完成的,所以称之为 动态分配。new运算格式: new 类型名 ( 初值表达式 )new 类型名 数组长度 动态空间的释放: delete 指针变量delete 指向动态数组的指针 第六章 函数【教学目的和要求】本章也是C+语言中较重要的内容,要求掌握C+语言中函数的定义、函数说明、函数格式、参数的引用、变量的存储类型及其使用范围。【教学重点】函数说明、参数的引用、变量的存储类型及其使用范围。【教学难点】变量的存储类型。【教学方法】讲授与上机相结合。【思考题】1. 函数调用的三种形式是什么?2. 使用函数的递归调用求Fibonacci数列。【讲授内容】6.1 函数的定义函数定义格式: 类型名 函数名 ( 参数表 ) 函数体。6.2 函数的调用1. 调用格式:函数名 ( 实际参数表 )2. 调用过程分为三步:l 参数传递 (实虚结合)l 执行函数体 (当遇return返回)l 返回 (返回一个值到调用表达式的位置 )3. 参数传递: 即:实参向形参的传递,又分为以下两种情况:l 值传递:非引用参数的传递原型为int fa(int x, char* a); 调用 fa(35, p); l 引用传递:引用参数的传递原型为char* fb(int& x, char*& y); 调用fb(xx, yy); 6.3 变量的作用域变量的作用域分为:全局、文件、函数、块作用域。全局作用域:在所有函数定义之外定义的变量,在该程序的所有文件里都可用。文件作用域:在所有函数定义之外定义的变量,且使用static定义的变量,只在本文件中有效。函数作用域:专指语句标号,供goto语句作为转移使用,只能在本函数内使用,对于其他函数无效。块作用域:在一条复合语句内定义,作用域只在该语句内有效,该复合语句称为块,该变量只能在本语句内使用,之外就不起作用了。6.4 递归函数一个函数在它的函数体内直接或间接地调用自己称为函数的递归调用。6.5 函数重载具有相同的函数名,而具有不同的参数表的函数,叫函数重载或重载函数。描述具有相同功能,但处理的数据类型是不同的这一类函数就称为函数重载,或利用函数重载。6.6 函数模板函数模板是带有类型参数的函数定义,类型参数由template成分给出。定义格式为:template 函数类型 函数名 ( 形式参数表 ) 函数体6.7 函数指针函数名是指向该函数执行代码的指针(由于函数通过编译后对应一段代码)。int fa(int x, int y);对应 int (*) (int, int) 定义函数指针变量并赋予函数指针后,函数指针就可以同函数名一样使用。int (*fp) (int, int)=fa; 调用fa(a, b);与 fp(a,b); 两者是等效的函数的形参表中也可以使用值参数,引用参数,这里也可以是函数参数(使同类型的函数名或函数指针)。第七章 结构与联合【教学目的和要求】本章要求熟练掌握C+语言中结构和联合的定义、引用。【教学重点】结构和联合的定义、引用。【教学难点】结构和联合在数据结构中的应用。【教学方法】讲授与上机相结合。【思考题】1. 结构定义语句的格式是什么?2. 结构类型变量的说明有哪三种方法?3. 联合与结构有何区别?它是如何定义的?【讲授内容】7.1 结构的定义结构是一种构造类型,它是由若干“成员”组成的。1. 结构的定义格式:struct 结构类型名 成员类型1 成员名1; 成员类型2 成员名2; 成员类型n 成员名n; ; 例:struct stuint num;char name20;char sex;float score;2. 结构类型的长度等于各个数据成员的长度之和。7.2 结构变量的定义和初始化三种方法:1) 先定义结构,再说明结构变量struct stuint num;char name20;char sex;float score;struct stu boy1,boy2;2) 在定义结构类型的同时说明结构变量struct stuint num;char name20;char sex;float score;boy1,boy2;3) 定义无名结构类型的同时定义变量struct int num;char name20;char sex;float score; boy1,boy2;7.3 结构成员的访问操作1. 直接成员访问使用点操作符:结构变量名.成员名boy1.sex;2. 间接成员访问使用箭头操作符:如stu *px=&boy2; coutsex score;(stu为结构类型)。 3. 结构的赋值操作:同其他类型的变量一样可以赋值。7.4 使用结构的程序举例#includestruct ABchar a10; int b; ;void main() AB r5=xxk,35, wrong,45, xc,23, tsh,18, chs,38; int k=0;for(int i=1; i5; i+)if(ri.brk.b) k=i;coutrk.a rk.b unionunion ABC int a; double b; char* c; x;类型长度为所有成员类型长度的最大值;联合对象的定义格式与访问方式均与结构相同 x.a x.b x.c;任一时刻只有一个成员有效,这一点不同与结构,原因是分配的最大空间数不一样,每一个成员均是通过该空间来访问的。这是访问其他成员是无效的。第八章 类与对象【教学目的和要求】本章是C+语言中面向对象的内容,要求熟练掌握C+语言中类的定义,数据成员和函数成员的定义和使用,以及构造函数、析构函数和友元函数的功能和使用。【教学重点】数据成员和函数成员的访问。【教学难点】构造函数、析构函数的定义和功能。【教学方法】讲授为主。【讲授内容】8.1 类的定义类类型的定义格式: class 类名 成员表 ; 其中, 成员表 为类的定义体。成员分为数据成员和函数成员(又称为成员函数),每个成员又带有访问属性,分为3种访问属性(private,public,protected),省略时默认为:private。类类型的长度等于所有数据成员长度之和(同结构)。类对象的定义:同结构类型的定义一样,既可以利用类名定义对象定义类类型的同时定义对象。类成员既可以直接访问,也可以间接的访问。 8.2 构造函数构造函数是用户定义的类中的一种成员函数,没有返回类型,函数名与类名相同,类对象定义时将被自动调用,其功能是用构造函数来实现对类对象的初始化。8.3 析构函数析构函数的函数名也与类名相同,但前面加波折号,参数表为空。8.4 友元函数和友元类以friend作为声明的友元函数能够访问类中的私有成员;友元类也能够访问类中的私有成员。 第九章 类的继承与多态性【教学目的和要求】本章也是C+语言中面向对象的内容,要求熟练掌握C+语言中类的继承的含义,派生类的定义格式,类的多态性和类模板等概念。【教学重点】派生类的定义格式。【教学难点】类的多态性和类模板等概念。【教学方法】讲授为主。【讲授内容】9.1 类的继承类是一种抽象数据类型,是对具有共同属性和行为的对象(事物)的抽象描述,属性被描述为类的数据成员,行为被描述为类的函数成员(成员函数)。一个类可以继承一个或多个类,这个新类被称为继承类或派生类,被继承的类称为基类或父类。派生类的定义格式:class 派生类名 : 基类表 成员表 ; 无论派
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 庆阳市重点中学2026届高三化学第一学期期末统考模拟试题含解析
- 2026届辽宁省大连经济技术开发区得胜高级中学化学高一第一学期期末经典模拟试题含解析
- 2025年秋季初级经济师考试 经济基础知识全真模拟试题解析
- 2025年秋季初级经济师考试 经济基础知识实战模拟试卷
- 2025年注册结构工程师考试冲刺试卷 结构设计原理专项训练
- 现代化定制家具知识培训课件
- 2025年注册会计师(CPA)考试 会计科目冲刺押题卷及答案
- 现代农业农药防治知识培训课件
- 银川第二中学2026届化学高一上期中质量跟踪监视模拟试题含解析
- 民法典学习解读
- 摊铺机装箱单rp452l smc1lxf使用说明书
- 泵与风机课堂版
- 最全海外常驻和出差补助管理规定
- 运维服务服务器网络设备日常巡检报告
- 《老年学概论(第3版)》课件第一章
- GB/T 32177-2015耐火材料中B2O3的测定
- GB/T 13955-2017剩余电流动作保护装置安装和运行
- GB/T 11968-2020蒸压加气混凝土砌块
- 基础生态学-生态系统生态学课件
- 幼小可爱卡通家长会通用
- 《古代汉语(II)》课程教学大纲(本科)
评论
0/150
提交评论