1、C语言复习语言复习n考试题型考试题型(闭卷、笔试、闭卷、笔试、120分钟分钟)判断题判断题10分分(每题每题1分分)选择题选择题40分分(每题每题2分分)概念填空概念填空20分分(每空每空1分分)程序填空程序填空15分分(每题每题3分分)编程题编程题15分分(1题题7分、分、1题题8分分)19:40:231n主要章节及知识点主要章节及知识点类型与输入类型与输入/输出输出运算符与表达式运算符与表达式分支转移分支转移循环循环函数函数数组数组指针指针常用系统函数常用系统函数结构体结构体文件读写文件读写19:40:232基本类型基本类型文字或字符型文字或字符型 charchar整型整型 intint浮
2、点型浮点型单精度单精度 floatfloat双精度双精度 doubledoubleC语言的基本数据类型1类型与输入输出类型与输入输出 C语言有类型修饰符:短长有符号无符号shortshortlonglongsignedsignedunsignedunsigned19:40:233C语言标识符:语言标识符:(1)由由字母字母、数字数字或或下划线下划线组成;组成;(2)第一个字符第一个字符必须是字母或下划线;必须是字母或下划线;(3)字母区分大小写。字母区分大小写。(4)命名时不能是命名时不能是C语言中的保留字或关键字语言中的保留字或关键字例如:例如:double,char,int,float,v
3、oid等关键字不可等关键字不可以定义成标识符。以定义成标识符。思考:以下标识符是否正确?思考:以下标识符是否正确?7_115A_3$starp#d my-points_1a*voidDoubleScanf19:40:234用程序输出文字用程序输出文字(教材教材p37)n为为转义符号转义符号,输出时,该符号和它后面输出时,该符号和它后面的一个字母或数字一起被当成一个字母的一个字母或数字一起被当成一个字母符号看待,例如常用的有:符号看待,例如常用的有:n表示换一行表示换一行t表示横向移到下一个制表位表示横向移到下一个制表位b表示回退一个字符表示回退一个字符19:40:235各种类型的常数值各种类型
4、的常数值(教材教材p44)n在程序中,如果要表示某种类型的一个在程序中,如果要表示某种类型的一个常数值,分别用不同的表示法。常数值,分别用不同的表示法。n字符常数表示法字符常数表示法一般可打印字符:一般可打印字符:a、A控制字符:控制字符:t、n、b、通用表示法:通用表示法:码值码值码值即码值即ASCII编码。为编码。为8进制或进制或16进制(用进制(用x开头)。例:开头)。例:101和和x41同同A(参考书面作业参考书面作业1练习题练习题)19:40:236nint常数表示法常数表示法10进制:同书写习惯。如进制:同书写习惯。如1938进制:用进制:用0开头。如开头。如012416进制:用进
5、制:用0 x开头。如开头。如0 x23fan可以在整数值后面加上可以在整数值后面加上L、U(或(或l、u)等后缀表示长整数和无符号整数。如:等后缀表示长整数和无符号整数。如:193u193L0 x23faU各种类型的常数值各种类型的常数值(教材教材p44)19:40:237从键盘输入数据从键盘输入数据n在使用在使用scanf输入函数或输入函数或printf输出输出函函数时,要在数时,要在源源程序文件的开头程序文件的开头写上写上预预编译指令编译指令#include19:40:238scanf从键盘输入数据从键盘输入数据n输入整数型变量:输入整数型变量:nscanf(%d,&);n例如:例如:in
6、tage;scanf(%d,&age);其它类型还有:其它类型还有:%c,%f,%lf,%ld等等19:40:239printf输出数据输出数据ndouble型变量的显示:型变量的显示:nprintf(%f,);n例:例:doublepi=3.14159;printf(%-4.3f,ratio);19:40:2410n%-m.nf-表示左对齐表示左对齐,m表示总宽度,表示总宽度,.n表示表示小数点位数小数点位数。例如:例如:%-4.3f其中其中-表示左对齐,表示左对齐,.3保留小数点保留小数点3位数。位数。注:总宽度只是在位数不够时补空格,如果超出则不受总宽度限制。19:40:24112.运算
7、符与表达式运算符与表达式运算符运算符n算术运算符:算术运算符:+-*/%(5种)种)n关系运算符:关系运算符:=!=(6种种)n逻辑运算符:逻辑运算符:&(与与and)|(或或or)!(非非not)19:40:2412运算符运算符n对一个数,如果做加对一个数,如果做加1的运算,可以使用运算的运算,可以使用运算符符+;类似地,如果做减;类似地,如果做减1的运算,使用的运算,使用-。例如:例如:a+相当于相当于a=a+1先使用后加先使用后加1a-相当于相当于a=a-1先使用后减先使用后减1+a先加先加1后使用后使用-a先减先减1后使用后使用注:不可以对一个注:不可以对一个常数常数做做+,-运算,例
8、如:运算,例如:1+,1-这种表示方法是错误的。这种表示方法是错误的。19:40:2413表达式表达式n数据对象如果用运算符组合,则得到了表达式。数据对象如果用运算符组合,则得到了表达式。n例如例如 1.age=a+19(此此表达式表示将变量a的值加19后赋值给变量age)2.x1 (此表达式表示变量x的值小于5且且大于1)3.x5|x5&a5|ab值:值:1ab)&(ab)|(ab)结果:结果:0!(ab?c=2:c=019:40:2422nswitch语句的作用是根据表达式的值语句的作用是根据表达式的值,使流程跳转到不同的语句,使流程跳转到不同的语句nswitch语句的一般形式语句的一般形
9、式:switch()case值值1:语句:语句1;break;case值值2:语句:语句2;break;case值值n:语句:语句n;break;default:语句语句n+1;整数类型整数类型(包括字符型包括字符型)值值1值值n不能相同不能相同要点要点1:必须是必须是整型或字符型,整型或字符型,逻辑型的值为逻辑型的值为0或或1,也属整型,也属整型switch语句语句19:40:2423nswitch语句的作用是根据表达式的值语句的作用是根据表达式的值,使流程跳转到不同的语句,使流程跳转到不同的语句nswitch语句的一般形式语句的一般形式:switch()case值值1:语句语句1;brea
10、k;case值值2:语句语句2;break;case值值n:语句语句n;break;default:语句语句n+1;当遇到当遇到break,结结束当前束当前case的执的执行,程序跳出行,程序跳出switch语句,勿语句,勿忘忘break表达式值与任何一个表达式值与任何一个case值值都不同时,则执行语句都不同时,则执行语句n+119:40:24244.循环循环(详细参考课件详细参考课件PPT)nfor(表达式表达式1;表达式表达式2;表达式表达式3)语句语句;首先执行首先执行表达式表达式1。如果如果表达式表达式2的的值为值为非非0,就,就重复执行重复执行语句语句和和表达式表达式3,直到直到表
11、达式表达式2的的值为值为0时时止止。循环初始条件检查循环条件改变循环变量19:40:24251.for语句语句-语法语法1此处是此处是“;”此处无此处无“;”n练习:用练习:用for语语句写一个程序句写一个程序,在屏幕上显,在屏幕上显示以下信息示以下信息4次次#includeintmain()intcount;for(count=0;count7;count+=2)printf(*n);return0;1.for语句语句-练习练习19:40:2426n例例2:(程序演示程序演示)#includeintmain()intcount;for(count=0;count3;count+)printf
12、(*n);return0;19:40:24271.for语句语句-应用举例应用举例n例例3:使:使for语句中没有表达式语句中没有表达式1(程序演示程序演示)#includeintmain()intcount=0;/*表达式表达式1被移到这里被移到这里*/for(;count3;count+)/*缺少表达式缺少表达式1*/printf(*n);return0;19:40:24281.for语句语句-应用举例应用举例不能省不能省略分号略分号n例例4:使:使for语句中没有表达式语句中没有表达式1和表达式和表达式3(程序演程序演示示)#includeintmain()intcount=0;/*表达
13、式表达式1被移到这里被移到这里*/for(;count3;)/*缺少表达式缺少表达式1和表达式和表达式3,分号不能省分号不能省*/printf(*n);count+;/*表达式表达式3被移到这里被移到这里*/return0;19:40:24291.for语句语句-应用举例应用举例nwhile(表达式表达式)语句语句;n只要只要表达式表达式的的值为值为非非0,就就重复执行重复执行语句语句,直到直到表表达式达式值为值为0时时止止真真假假假19:40:24302.while语句语句ndo 语句语句;while(表达式表达式);n首先执行首先执行语句语句,然后判断然后判断表达表达式式的的值值。如果如果
14、表达式表达式为为0,继续继续向下执行,向下执行,否则否则,再次执行再次执行语语句句,再次判断再次判断表达式表达式的的值值n语句语句会会被至少执行一次被至少执行一次表达式假假真真19:40:25313.do-while语句语句循环的中断循环的中断nbreak作用是中断当前循环,跳转到循作用是中断当前循环,跳转到循环体外的下一条语句继续执行;环体外的下一条语句继续执行;ncontinue语句是中断当前这一轮循环,语句是中断当前这一轮循环,开始下一轮循环(并未结束循环)。开始下一轮循环(并未结束循环)。19:40:2532无限循环的应用无限循环的应用n三种循环语句实现无限循环(即循环条三种循环语句实
15、现无限循环(即循环条件永远满足)如何写?件永远满足)如何写?do /循环体 while(1);for(;)/循环体 while(1)/循环体 19:40:2533无限循环的应用无限循环的应用n对于不确定次数的循环,可以在无限循对于不确定次数的循环,可以在无限循环中根据条件决定是否中断环中根据条件决定是否中断for(;)/循环体 if(中断条件)break;while(1)/循环体 if(中断条件)break;do /循环体 if(中断条件)break;while(1);19:40:25345.函数函数n函数用函数用参数参数实现信息的实现信息的输入输入,用,用返回值返回值输出输出结果。结果。n函
16、数头的一般写法为:函数头的一般写法为:返回值类型返回值类型 函数名函数名(参数参数1 1类型类型 参数参数1 1名,参数名,参数2 2类类型型 参数参数2 2名名)注意:注意:参数可以有参数可以有0个或者多个。没有参数时,个或者多个。没有参数时,括号不能省略。多个参数用逗号括号不能省略。多个参数用逗号(,)分开。分开。19:40:2535例:例:#include float add(float x,float y);int main(void)printf(“%.2f”,add(1,3);/调用add函数时将1传给 x,3传给y,输出结果:4.00 return 0;float add(flo
17、at x,float y)/被调用时将1传给x,3传给y return x+y;/返回结果419:40:2536例:例:#include float add(float x,float y);int main(void)printf(“%.2f”,add(add(1,3),3);输出结果:7.00 return 0;float add(float x,float y)/第1次被调用时将1传给x,3传给y;第2次被调用时将4传给x,3传给y return x+y;19:40:25376.数组数组nC语言定义一维数组方式为:语言定义一维数组方式为:数据类型数据类型数组名数组名数组元素个数数组元素个
18、数;n例如,存放例如,存放30个同学分数的数组可申明为:个同学分数的数组可申明为:intscores30;n这里这里int是数组类型,是数组类型,scores是数组名,是数组名,30是数组元素个数。是数组元素个数。19:40:2538一维数组定义一维数组定义数组的定义与使用数组的定义与使用n可以在数组申明后分别给数组元素赋值:可以在数组申明后分别给数组元素赋值:intnumbers3;numbers0=34;numbers1=23;numbers2=84;n也可以在申明的同时赋初值:也可以在申明的同时赋初值:intnumbers3=34,23,84;注意:注意:这里这里中的值不能超过数组的元素
19、个数。中的值不能超过数组的元素个数。19:40:2639一维数组初始化一维数组初始化数组的定义与使用数组的定义与使用n在申明的同时赋初值还可以写成:在申明的同时赋初值还可以写成:intnumbers=34,23,84;注:全部数组元素赋初值注:全部数组元素赋初值,可不指定数组长度可不指定数组长度n若数组长度与提供初值个数不相同,则不可若数组长度与提供初值个数不相同,则不可省数组长度,例如:省数组长度,例如:intnumbers5=34,23,84;/个数可以少于个数可以少于5,后,后2个元素为个元素为0但但不不能写成:能写成:intnumbers3=34,23,84,0,0;/不能超过不能超过
20、319:40:2640数组的定义与使用数组的定义与使用n练习:设有数组定义如下练习:设有数组定义如下intscore=67,90,80,86,93;n问:问:score2值为多少?值为多少?score5呢?呢?该数组长度是多少?下标范围是?该数组长度是多少?下标范围是?1.元素score2值为80(因为数组下标是从0开始)2.score5越界(因为数组元素下标最大值为4)3.该数组长度是5(因为初始化只有5个数)4.数组元素下标范围是:0419:40:2641二维数组二维数组n二维数组的定义:二维数组的定义:数据类型数据类型数组名数组名元素元素行数行数元素元素列数列数;n例:例:intstud
21、entScores34;注:注:不不可写成可写成intstudentScores3,4;19:40:2642二维数组二维数组n二维数组也可以在申明的同时赋初值。二维数组也可以在申明的同时赋初值。有多种方法:有多种方法:1全部数组元素都给定值,并定义各全部数组元素都给定值,并定义各维的元素数维的元素数intstudentScores35=89,98,78,85,65,66,69,90,89,70,80,76,68,73,80;19:40:2643二维数组二维数组2全部数组元素都给定值,并省略第全部数组元素都给定值,并省略第一维的元素数一维的元素数intstudentScores5=89,98,7
22、8,85,65,66,69,90,89,70,80,76,68,73,80;可以看出此数组的行数是:可以看出此数组的行数是:3行行19:40:2644二维数组二维数组3部分给定数组元素值部分给定数组元素值intstudentScores35=89,98,78,66,69,90,89,70;intstudentScores5=89,98,66,69,90,89,80,76,68;19:40:2645二维数组二维数组4直接按顺序给定元素值直接按顺序给定元素值intstudentScores35=89,98,78,85,65,66,69,90,89,70,80,76,68,73,80;也可以不给定全
23、部值:也可以不给定全部值:intstudentScores35=89,98,78,85,65,66,69,90,89,70,80,76,68;19:40:2646二维数组二维数组还可以对前面的行不给定全部值:还可以对前面的行不给定全部值:intstudentScores35=89,98,78,66,69,90,89,70,80,76,68,73,80;也可以:也可以:intstudentScores5=89,98,78,66,69,90,89,70,80,76,68,73,80;19:40:2647字符数组与字符串数组字符数组与字符串数组参考教材及相应参考教材及相应PPT19:40:26487
24、.指针指针19:40:2649指针的基本用法指针的基本用法n申明指针变量:申明指针变量:数据类型数据类型*指针变量名指针变量名;例如:申明例如:申明int型指针变量型指针变量int*ptrAge;/ptrAge为指针变量名为指针变量名申明申明float型指针变量型指针变量float*ptrWeight;指针变量名通常用指针变量名通常用p或或ptr做前缀。做前缀。19:40:2650注意:注意:int*ptrAge;float*ptrWeight;int与与float是是为为指针变量指定的指针变量指定的“基类型基类型”基类型基类型指定指针变量可指向的变量类型指定指针变量可指向的变量类型例例如如p
25、trAge可以指向整型变量,但不能可以指向整型变量,但不能指向浮点型变量指向浮点型变量又如又如ptrWeight可以指向浮点型变量,但可以指向浮点型变量,但不能指向不能指向整整型变量型变量指针的基本用法指针的基本用法19:40:2651指针的基本用法指针的基本用法另外:我们可同时申明变量和指针变量另外:我们可同时申明变量和指针变量intage,*ptrAge;floatweight=50,*ptrWeight;age为为int型变量,型变量,weight为为float型变量型变量ptrAge为为int型指针变量,型指针变量,ptrWeight为为float型指针变量型指针变量19:40:265
26、2n下面都是合法的定义下面都是合法的定义和初始化和初始化:intage;floatweight=50;int*ptrAge=&age;float*ptrWeight=&weight;*ptrAge=&age;错误错误ptrWeight=&age;错误错误ptrAge=&age;正确正确ptrWeight 2000;错误错误指针的基本用法指针的基本用法19:40:26538常用系统函数常用系统函数n舍入:舍入:ceil,floor,round,truncn字符串函数:字符串函数:strlen、strcpy、strcat、strcmp等等n字符串转换函数:字符串转换函数:atoi,atof,ato
27、l19:40:26549.结构体结构体n定义方式为:定义方式为:struct结构体名结构体名类型类型1成员名成员名1;类型类型2成员名成员名2;/结构体可以有多个成员定义结构体可以有多个成员定义类型类型n成员名成员名n;;关键字成员由类型、名称构成。19:40:2655结构体的定义结构体的定义n如果要定义学生信息结构体类型,可以:如果要定义学生信息结构体类型,可以:struct student int studentNo;/成员:学号 char name20;/成员:姓名。成员可以是数组 int age;/成员:年龄 int chineseScore;/成员:中文成绩 int mathScor
28、e;/成员:数学成绩 int englishScore;/成员:英语成绩;这里有分号struct student为一个新数据类型19:40:2656结构体的应用结构体的应用n访问变量成员访问变量成员读、写一个结构体变量的成员,使用读、写一个结构体变量的成员,使用“.”运算符表达式。例如:运算符表达式。例如:s1.studentNo结构体结构体变量名变量名结构体结构体成员名成员名成员运成员运算符算符19:40:2657结构体的应用结构体的应用n用结构体指针访问变量成员用结构体指针访问变量成员C语言为此定义了结构指针运算符:语言为此定义了结构指针运算符:-例如:例如:sp-studentNo-运算
29、符优先级比取址运算符优先级比取址&运算符优先级高运算符优先级高指针取值运算符指针取值运算符*优先级比成员运算符优先级比成员运算符.优先级低优先级低结构体结构体指针指针结构指针结构指针运算符运算符结构体结构体成员名成员名19:40:265810.文件文件n常用的文件处理函数及其功能包括(但不限常用的文件处理函数及其功能包括(但不限于):于):fopen打开文件;打开文件;fclose关闭文件;关闭文件;fprintf向文本文件输出格式化数据;向文本文件输出格式化数据;fscanf从文文本件读取或输入格式化数据;从文文本件读取或输入格式化数据;fgetcfputc19:40:2659书面作业书面作业1、2更正更正n书面作业书面作业1选择题选择题53:将将Y改成改成y填空题填空题37:将将*2*改成改成*3*n书面作业书面作业2选择题选择题4:答案改成答案改成C选择题选择题20:将:将“下列判断下列判断错误错误的是的是”改成改成“下列下列判断判断正确正确的是的是”,答案是,答案是C。此题请参考教材。此题请参考教材P158,赋空值赋空值NULL的相关概念。的相关概念。19:40:2660