1、C程序设计(二级)辅导计算机与信息工程学院通过等级考试,并不能表明你真正学会了C语言。正如你通过了6级英语,就能写出莎士比亚一样的诗句吗?学好C语言的唯一途径就是:编程,编程,再编程,实践,实践,再实践C语言学习的目标课程的定位l公共基础课,类似大学英语、高等数学、大学物理等课程教学目标:素质教育与能力培养l实践能力l创造性l抽象思维能力(图形处理、internet程序设计、自动控制单片机、统计、管理信息系统、数据安全方面等等)二级考试的目的检测计算机编程能力的依据激发学生学习程序设计语言的兴趣实践创新的基础,更好的服务于专业课程教学中的问题:学学习难点l不在于掌握某种程序设计语言的语法规范,
2、而是掌握程序设计的基本方法考试目标了解和掌握C语言的语法使用掌握的语言知识进行编程上机调试的能力使用程序语言解决简单实际问题考试细则网络环境的上机考试考试时间:120分钟考卷从服务器上下载、考试结果上传至服务器考试阅卷采用机器和人工阅卷两种形式 学编程,上机的重要性远远大于看书。亲自动手编程序的学习效果比干啃书本要好上0 xFFFFFFFF倍。上机不要就是敲书上的例子,那只能锻炼出打字员。干点儿有挑战性的事情,比如编个小游戏,做个恶作剧程序,更可以考虑开发共享软件。如果你感到无从着手,那就下载别人的源代码看。同时,千万不要把自己陷到TC2里面,把路子走得宽一些,VC、gcc、Dev-C+、Ec
3、lipse,广阔天地,精彩无限。序号题型题量计分考核目标一单选题1515分基本概念程序理解语义知识二程序调试题320分基本语句程序调试程序设计三程序填空题2330分常用算法程序设计四编程题235分常用算法综合应用合计2223题100分考试知识点讲解C C语言源程序结构语言源程序结构 预处理命令预处理命令 外部数据定义外部数据定义 函数函数mainmain和其它函数定义和其它函数定义理解理解知道知道知道知道程序的书写格式程序的书写格式 基本词法单位、标识符基本词法单位、标识符/ /常量常量/ /运算符等构成规运算符等构成规则则 程序的书写格式与风格程序的书写格式与风格理解理解知道知道C C语言程
4、序设计步语言程序设计步骤骤 VC VC编程环境的操作使用编程环境的操作使用 程序的编辑程序的编辑/ /编译编译/ /连接连接/ /调试调试/ /运行运行掌握掌握掌握掌握C程序的组成、结构及书写规则程序的组成、结构及书写规则一个完整的C程序int isprime(int n) int k, i; if (n = 1) return 0; k = (int)sqrt(double)n); for (i=2; i=k; i+) if (n % i = 0) return 0; return 1;#include #include main() int i; for (i=2; i100; i+) i
5、f (isprime(i) printf(%dt, i); 本节要点C程序的组成特点标识符一/关键字二/预定义标识符三/用户标识符C C语言程序设计步骤语言程序设计步骤 编辑、编译与运行编辑、编译与运行 调试程序调试程序C程序常见符号分类 关键字(Keyword)l又称为保留字,C语言中预先规定的具有固定含义的一些单词l数据类型修饰符int,控制语句return等标识符(Identifier)l系统预定义标识符,main,printf 等l用户自定义标识符,Add, x, y等运算符(Operator)l34种,详见附录2分隔符(Separator)l空格、回车/换行、逗号等其它符号l大花括号
6、“”和“”通常用于标识函数体或者一个语句块l“/*”和“*/”是程序注释所需的定界符数据(Data)l变量(Variable)l常量(Constant)标识符命名 变量名函数名由英文字母、数字和下划线组成,大小写敏感不可以是数字开头直观,见名知意,便于记忆和阅读l最好使用英文单词或其组合l切忌使用汉语拼音下划线和大小写通常用来增强可读性lvariablenamelvariable_namelvariableName不允许使用关键字作为标识符的名字lint, float, for, while, if等某些功能的变量采用习惯命名l如:for语句所采用的循环变量习惯用i, j, k设置断点设置断点
7、调试运行调试运行现在我们点击工具栏上的“调试运行按钮(F5)”,这时程序将自动编译、连接、运行,然后停在我们所设定的断点的行上。设置断点后,我们可以看见当前行的最左端有一个暗红色的大圆点,如下图所示:C语言数据类型 基本类型、数组、结构、指针类型、空类型掌握C语言常量 常量和变量 整型、实型(单/双精度)、字符型和字符串常量的表示方法掌握理解C语言变量和C语言基本数据类型 各种类型变量的定义和说明 变量的初始化掌握掌握基本数据类型基本数据类型数据类型(Data Type)数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型实型(浮点型)实型(浮点型)字符型字符型
8、枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型何谓类型溢出(Overflow)?C语言直接提供的任何类型都有取值范围。当向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。TC2中int的范围是-3276832767l如果超出取值范围,给它一个小于-32768或者大于32767的数会如何呢?现场编程测验类型溢出的解决方案?解决方案:l预先估算运算结果的可能范围,采用取值范围更大的类型。1+2+3+1!+2!+3!+13+23+33+l如果不需要处理负数,则采用无符号类型。l在运算还没开始之前就判断运算数是否
9、在合理的取值范围内。如果超出,则停止运算,转错误处理。为什么需要常量?假如不使用常量,直接使用常数,会有什么影响?l程序的可读性变差l容易发生书写错误l修改麻烦常量只能在定义时赋值,然后不能再改变其值l宏常量lconst常量l枚举常量常数(Constant)整型常数l18、-31llong int型常量123l、123L、123456l、123456Llunsigned int型常量123u、 123U浮点常数l十进制小数形式123.45、456.78l指数形式1e-2、4.5e3lfloat型常量123.45f、456.78F、1e-2f、4.5e3Fllong double型常量123.4
10、5l、456.78L、4.5e3Ll缺省为doublel因为字母l和数字1容易混淆,所以当用l做后缀时,常使用大写形式八进制与十六进制常数以数字“0”开始的整型常数是八进制数l022、-037l010和10大小不一样l因为八进制并不常用,所以此种表示法比较少见以“0 x”或者“0X”开始的整型常数是十六进制lAF和af用来表示十进制的1015l十六进制的形式比较常用l0 x12、-0 x1F, -0 x1f字符(Character)常数字符常数的表示方法la,A,5,%,$l单引号内只能有一个字符,除非用“”开头就是一个普通整数,也可以参与各种数学运算l每个字符具有一个0255之间的数值,可从
11、ASCII表查出l注意:5和整数5的区别l字符的数学运算在密码学内用得比较多用“”开头的字符为转义字符l例如,n,代表1个字符字符常数转义字符l一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示字符串(String)常数用双引号括住的由0个或多个字符组成的字符序列lI am a stringl表示空字符串l转义字符也可以在字符串中使用l引号只作为字符串开始和结束的标志lC语言内部用0表示字符串的结束l除注释外,是唯一可以出现中文的地方x和x是不同的里定义了一系列专门的字符串处理函数变量声明使用变量的基本原则l变量必须先定义,后使用l所有变量必须在第一条可执行语句前定义声明的顺序无关紧要一
12、条声明语句可声明若干个同类型的变量声明变量,是初始化变量的最好时机l不被初始化的变量,其值为危险的随机数char esc = a;int i = 1;int sum = 0;float eps = 1.0e-5;运算符 运算符种类、功能、目数、优先级、结合性和副作用理解算术运算 自动类型转换规则掌握关系和逻辑运算 关系和逻辑运算规则 逻辑运算的优化规则掌握理解位运算 位运算规则和简单位运算知道赋值运算 赋值运算中自动类型转换规则(以左值类型为准转换) 复合赋值掌握理解其他运算 条件、逗号、求存储空间大小运算知道表达式 表达式组成规则、各类表达式 描述计算过程/条件判断的表达式 各类型数据混合运
13、算中求值顺序 表达式运算中的隐式类型转换和强制类型转换 基本运算执行顺序、表达式结果类型理解理解掌握理解掌握基本运算和表达式基本运算和表达式算术运算符+,-,*,/l加、减、乘、除运算l四则混合运算中,先算乘除,后算加减,按从左向右的顺序计算,左结合%l求余运算常用的标准数学函数函数名功能函数名功能sqrt(x)计算x的平方根,x应大于等于0exp(x)计算ex的值fabs(x)计算x的绝对值pow(x,y)计算xy的值log(x)计算lnx的值sin(x)计算sinx的值,x为弧度值log10(x)计算lgx的值cos(x)计算cosx的值,x为弧度值关系运算符,=, b & b c);a大
14、于b,并且b大于c或运算|la | b只要两者中有一个为真,结果就为真l( a b | b c);a大于b,或者b大于c求反!l( !a );如果a是0,结果非0;如果a是非0,结果是0l并不改变a的值实例ch是英文大写字母(ch = A) & (ch double float long int short chardoublefloatlongunsignedintchar,short精度低精度高自动类型转换在进行赋值操作时,会发生类型转换将取值范围小的类型转为取值范围大的类型是安全的反之是不安全的l如果大类型的值在小类型能容纳的范围之内,则平安无事l但是,浮点数转为整数,会丢失小数部分,非
15、四舍五入l反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关。避免如此使用,好的编译器会发出警告类型强转(Casting) 消除从大到小的警告ll = (long)i;可以通过“(类型)表达式”的方式把表达式的值转为任意类型l强转时,你必须知道你在做什么l强转与指针,并称C语言两大神器,用好了可以呼风唤雨,用坏了就损兵折将例m/2 = 2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5增一和减一运算符n+,n-,+n,-nl+让参与运算的变量加1,-让参与运算的变量减1l作为后缀运算符时,先取n的值,然后加/减1l作为前缀运算符时,先
16、加/减1,然后取n的值增一和减一运算符n+,n-,+n,-nl+让参与运算的变量加1,-让参与运算的变量减1l作为后缀运算符时,先取n的值,然后加/减1l作为前缀运算符时,先加/减1,然后取n的值增一和减一运算符良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加1或者减1运算l过多的加1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果位操作运算符&l按位与运算|l按位或运算l按位异或运算l按位右移运算l按位求反位操作运算符逻辑运算与位运算的不同main() int x=12, y=8; printf(n%5d%5d%5d, !x, x|y,
17、 x&y); printf(n%5d%5d%5d, x, x|y, x&y); printf(n%5u%5d%5dn, x, x|y, x&y); 0 1 1 -13 12 865532 12 8赋值运算符+、-、*、/、%、&、|运算符都可按此种方式处理l这种形式看起来更直观,且执行效率一般也能更高一些课堂练习:P45,2.2(7)逗号运算符多数情况下,并不使用整个逗号表达式的值,更常见的情况是要分别得到各表达式的值主要用在循环语句中,同时对多个变量赋初值等 for (i = 1 , j = 00; i .! + - + - * & (类型) sizeof* / %+ - = !=&|&|?
18、 := += -= *= /= %= &= = |= =,优先级能背下优先级表的人凤毛麟角用括号来控制运算顺序更直观、方便,并减少出错的概率结合性多数运算符为左结合少数为右结合:l一元运算符l赋值运算符l条件运算符基本语句及顺序结构语句 定义/说明语句,表达式语句,空语句,复合语句、函数调用语句掌握选择结构语句 描述条件和情况的if,switch语句、 选择语句嵌套掌握循环结构语句 描述循环执行的while,do-while,for语句 循环语句嵌套掌握转移语句 改变程序流程执行次序的break,continue, return语句掌握语句语句复合语句括住的若干条语句构成一个语句块,称为复合语
19、句语句块内可以定义变量l变量仅在定义它的复合语句内有效l变量必须在复合语句的开头定义复合语句可以用在任何可以使用语句的地方if-else选择结构的一种最常用形式 if (表达式) 语句1;else语句2; 语句3表达式值非0时,执行语句1,然后语句3;表达式值为0时,执行语句2,然后语句3else-ifif的一种扩展形式相当于else分支嵌套if (表达式1) 语句1;else if (表达式2)语句2;else if (表达式3)语句3;else语句4;语句5;表达式1 语句1 语句2 语句3 语句4表达式2表达式3 图4-9 多分支选择结构例:体型判断按“体指数”对肥胖程度进行划分:体指数
20、t = w / h2 (体重w单位为公斤,身高h单位为米)l当t 18时,为低体重;l当18 t 25时,为正常体重;l当25 t 27时,为超重体重;l当t 27时,为肥胖。编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。用3种方法编程:l算法1:用不带else子句的if语句编程 l算法2:用在if子句中嵌入if 语句的形式编程 l算法3:用在else子句中嵌入if 语句的形式编程 switch多路选择switch (表达式) case 常数1: 语句序列1;case 常数2: 语句序列2;default: 语句序列3;default可以没有,但最好
21、不省略不要忘记break循环while语句,for语句while (表达式) 语句; for (表达式1; 表达式2; 表达式3) 语句; while语句while (表达式) 语句; 只要表达式的值为非0,就重复执行语句,直到表达式值为0时止真假假假for语句for (表达式1; 表达式2; 表达式3) 语句; l首先执行表达式1。如果表达式2的值为非0,就重复执行语句和表达式3,直到表达式2的值为0时止循环起始条件循环起始条件循环结束条件循环结束条件循环增量循环增量for语句for (表达式1; 表达式2; 表达式3) 语句; 相当于:表达式1和表达式3可以没有或者是用逗号分隔的多个表达式
22、的组合。但最好不要有太多的表达式组合do-while语句do 语句;while (表达式);首先执行语句,然后判断表达式的值。如果表达式为0,继续向下执行,否则,再次执行语句,再次判断表达式的值语句会被至少执行一次表达式表达式假假真真真假假假真假假当循环条件第一次就为假时选择三种循环的一般原则如果循环次数已知,用for如果循环次数未知,用while如果循环体至少要执行一次,用do-while这只是“一般”原则,不是“原则”注意在for和while语句之后一般没有分号有分号表示循环体就是分号之前的内容(空循环体)while (i 100);i+;for (i = 0; i 100; i+);pr
23、intf(%d, i);for通常有一个循环变量控制循环的次数,不要在循环体内改变这个变量现场编程计算1+2+100=?分别用如下语句编程lforlwhileldo-while单步跟踪执行程序,且使用监视窗观测变量值的变化嵌套循环 外层循环 内层循环 内层循环 内层循环 合法的嵌套循环 流程的转移控制 break语句continue语句goto语句break和continue对for、while、do-while循环进行内部手术break,退出一层循环或者switchcontinue,中断此次循环体的执行,开始下一次break和continue少用为妙单步运行演示break语句和continu
24、e语句的用法区别#include main()int i, n;for (i=1; i=5; i+)printf(Please enter n:);scanf(%d, &n);if (n 0) continue;printf(n = %dn, n);printf(Program is over!n);Please enter n: 10n = 10Please enter n: -10Please enter n: 20n = 20Please enter n: -20Please enter n: 30n = 30Program is over! 其他流程转移控制return语句l将在第5章
25、讲解 标准库函数exit()l作用是终止整个程序的执行,强制返回操作系统l调用该函数需要嵌入头文件常用算法求阶乘:l数据类型的定义, long或double求累加和: long统计:l统计正数、平均分以上、n个成绩中10090、8980、7970、6960、60的人数;输入字符串中字母d的个数l设置一个计数变量k:初始化为1,每遇到一次将其加1:k+;这一章我们学习了累加和存放累加和的变量:l初始化为0或第一项,再循环加每一项;循环控制:l前n项之和已知循环次数,可设置一个循环变量如i来控制;l加到某一项或累加和满足一定条件。例:1+2+.+n与1+3+5+7+.和2+4+6+8+.及12+3
26、2+52+72+.输入n或累加和大于2000的最小的n这一章我们学习了累加的项较复杂时,得专门求,例:l前后项之间无关l1m+3m+5m+7m+.l/4=1-1/3+1/5-1/7+.直到最后一项的绝对值小于10-6为止l前后项之间有关l1!+2!+.+n!lx0+x1+x2+x3+.l1+1+2+3+5+8+13+21+.l2/1+3/2+5/3+8/5+13/8+21/13+.la+aa+aaa+aaaa+aaaaa+.a是一个数字,例a=2,2+22+222+2222+.其他常用算法求素数斐波那契数列展转相除法求最大公约数枚举法求百元买百鸡一维数组 一维数组定义、引用和初始化掌握二维数组
27、 二维数组定义、引用和初始化掌握字符数组和字符串 字符数组定义、引用和初始化 字符串结束标志、初始化、字符串处理函数掌握理解数组数组内容提要数组类型;向函数传递一维数组和二维数组;常用算法:排序、查找、求最大最小值等;用字符数组存取字符串;使用字符串处理函数处理字符串数组(Array)int a10;l定义一个有10个元素的数组,每个元素的类型均为intl使用a0、a1、a2、a9这样的形式访问每个元素。可以像使用普通变量一样使用他们。l系统会在内存分配连续的10个int空间给此数组l直接对a的访问,就是访问此数组的首地址a数组首地址数组首地址a9a8a7a1a0数组的定义与初始化数组定义后的
28、初值仍然是随机数,一般需要我们来初始化int a5 = 12, 34, 56 ,78 ,9 ;int a5 = 0 ;int a = 11, 22, 33, 44, 55 ;数组大小最好用宏来定义,以适应未来可能的变化l#define SIZE 10int aSIZE;数组大小定义好后,将永远不变数组的使用数组的下标都是从0开始对数组每个元素的使用与普通变量无异可以用任意表达式作为下标,动态决定访问哪个元素for (i=0; iSIZE; i+) ai = 2 * i;下标越界是大忌!l使用大于最大下标的下标,将访问数组以外的空间。那里的数据是未知的,可能带来严重后果sizeof可以用来获得数
29、组大小只能逐个对数组元素进行操作(字符数组例外)只能逐个对数组元素进行操作(字符数组例外)int a10,i;scanf( %d ,&ai);for (i=0;i10;i+) scanf( %d ,&ai);printf( %d ,ai);for (i=0;i10;i+) printf( %d ,ai);一维数组的输入和输出一维数组的输入和输出餐饮服务质量调查打分 有40个学生被邀请给自助餐厅的食品和服务质量打分(110等级),统计调查结果,并用*打印如下形式的统计结果直方图Grade Count Histogram 1 5* 2 10* 3 7* .餐饮服务质量调查打分 提示l定义数组sco
30、re存放打的分数l定义数组count为计数器(count0不用)l计算统计结果:设置一个循环,依次检查数组元素值scorei,是1则将数组元素count1加1,是2则将数组元素count2加1,依此类推for (i=0; iSTUDENTS; i+)countscorei +;l打印统计结果,设置一个循环,按count数组元素的值,打印相应个数的符号*二维数组的定义- - 二维数组的存储结构short int a23;a0a1a10 a11a12a00 a01a02存放顺序:存放顺序:按行按行存放存放先顺序存放第先顺序存放第0行的元素行的元素再存放第再存放第1行的元素行的元素a00a01a02
31、a10a11a12二维数组的输入和输出数组的输入和输出只能逐个对数组元素进行操作数组的输入和输出只能逐个对数组元素进行操作(字符数组例外)(字符数组例外)int a23,i,j;输入第输入第i行第行第j列元素:列元素:scanf(“%d”,&aij);输入整个数组元素:输入整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);输出第输出第i行第行第j列列元素:元素:printf(“%d”,aij);输出整个数组元素:输出整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);打印最高分
32、(常考到的题目)从键盘输入学生人数n;从键盘输入所有学生的学号和成绩分别存入数组num和score假设其中的一个学生成绩为最高maxScore = score0;对所有学生成绩进行比较,即 for (i=1; i maxScore则修改maxScore值为scorei 打印最高分maxScore排序算法交换法排序选择法排序查找算法顺序查找折半查找顺序查找int Search(long a, int n, long x) int i; for (i=0; iamid, low=mid+1第二次循环:第二次循环:99011 99013 99015 99017 99019 low=mid high
33、x=amid,找到,找到哈,找到了!折半查找数组下标数组下标 0 1 2 3 4 5 6第一次循环:第一次循环:99011 99013 99015 99017 99019 查找值查找值x=99016 low mid high xamid, low=mid+1第二次循环:第二次循环:99011 99013 99015 99017 99019 low=mid high xamid, high=mid-1第三次循环:第三次循环:99011 99013 99015 99017 99019 high low 不满足不满足low=high, 循环结束循环结束,未找到未找到 唉,没找到!计算每门课程的总分和
34、平均分void Total(int scoreCOURSE, int sum, float aver, int n) int i, j;for (j=0; jCOURSE; j+) sumj = 0; for (i=0; in; i+) sumj = sumj + scoreij; averj = (float) sumj / n; 字符串(String)与字符数组字符串l一串以0结尾的字符在C语言中被看作字符串l用双引号括起的一串字符是字符串常量,C语言自动为其添加0终结符lC语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理字符数组l每个元素都是字符类型的数组char
35、 string80;字符数组的初始化用字符型数据对数组进行初始化lchar str6 = C,h,i,n,a,0; 用字符串常量直接对数组初始化 lchar str6 = China; lchar str6 = China;逐个输入输出for (i=0; si!=0; i+) putchar(si);putchar(n);一次性输入输出scanf(%s,s); printf(%s,s);char s10;字符数组的输入输出 gets(s); puts(s);scanf()char str10;scanf(%s, str);l不能读入带空格的字符串,gets()可以l这两种用法都不安全。当用户的
36、输入多于10个(含10个),str数组将越界l现场编程做试验lscanf被公认为最易遭到黑客攻击的函数之一gets()字符串输入函数gets()也没有提供限制输入字符串长度的方法,容易引起缓冲区溢出,给黑客攻击以可乘之机 对输入字符串长度有限制的函数调用lfgets(buf, sizeof (buf), stdin);字符串处理函数在中定义了若干专门的字符串处理函数strcpy: string copylstrcpy(目的字符串,源字符串);strlen: string lengthlstrlen(字符串);l返回字符串的实际长度,不包括0strcat: string combinationl
37、strcat(目的字符串,源字符串);strcmp: string comparisonlstrcmp(字符串1,字符串2);l当出现第一对不相等的字符时,就由这两个字符决定所在字符串的大小l返回其ASCII码比较的结果值字符串处理函数str1 = str2; /*错误*/lstrcpy(str1,str2); /*正确*/if (str1 str2) /*错误*/ lif (strcmp(str1,str2) 0) /*正确*/字符串不能直接整体复制!也不能用关系运算符比较大小例例从键盘任意输入5个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名等价于求最小字符串#include #
38、include #define ARRA_SIZE 80main()int n, num;char strARRA_SIZE, minARRA_SIZE;printf(Please enter five names:n);gets(str); strcpy(min, str); for (n=1; n5; n+)gets(str); if (strcmp(str, min) 0) strcpy(min, str); printf(The min is:);puts(min); 函数的定义方法 函数原型、函数名、形式参数、函数返回值、函数体-函数执行过程的描述掌握函数类型和返回值 不同类型函数定
39、义、缺省类型、空类型理解函数传值调用 形参、实参及其参数单向传递掌握函数说明 函数原型及作用 用户定义函数说明 系统库函数说明-用头文件包含理解理解理解函数参数类型和函数的传址调用 传值调用和传址调用 数组名作为函数参数掌握理解函数嵌套调用和递归调用 递归函数的定义和调用 递归函数的执行过程知道理解函数定义和调用函数定义和调用变量存储类别的概念 自动、寄存器、外部及内部静态/外部静态各种变量类型理解变量的作用域 在函数外部、函数内部、复合语句内定义变量的作用域理解变量的生存期和有效期 自动、外部及内部静态/外部静态变量的生存期和有效期知道编译预处理 文件包含和宏定义知道变量的存储类别和编译预处
40、理变量的存储类别和编译预处理指针概念 地址、指针和指针变量的含义和表示掌握指针与地址运算符 取地址运算符&和取内容运算符*理解用指针处理数组、字符串 数组、字符串的指针以及指向数组、字符串的指针变量 通过指针引用以上各类型数据理解理解用指针作函数参数 通过指针类型参数传递计算结果,改变主调函数实参值理解指针的高级功能 函数指针-返回指针值的的指针函数 指针数组、指向指针的指针 main函数的命令行参数简介知道知道知道指针指针结构体类型数据 结构定义方法和引用方法 结构体变量初始化理解理解结构体数组 结构体数组定义、初始化理解结构体指针变量 指向结构体类型变量的指针变量 指向结构体类型数组的指针
41、变量理解知道链表 用指针和结构体构成链表、单向链表的建立、输出、删除与插入(包括动态空间申请与释放)理解结构体与共用体结构体与共用体基本概念 文件类型文本文件/二进制文件、文件指针理解文件操作 文件的打开和关闭 定位 文件的读/写掌握常用库函数 常用的库函数:打开和关闭:fopen、fclose文件结束判断:feof()定位:fseek、rewind读/写:fputc、fgetc、fputs、fgets、fprintf、fscanf、fwrite、fread等理解文件文件算法和结构化程序设计 算法概念、表示 结构化程序设计知道单链表、栈和队列的操作 单链表建立、查找、插入、删除和合并 栈和队列的建立和基本操作知道排序和查找 简单的排序算法和查找算法知道算法和数据结构的简单知识算法和数据结构的简单知识