单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C语言复习提纲,山东理工大学,第一局部:根本概念,一、c程序的构成特点,1.一个c程序可以由一个或多个源文件.c构成,一个源文件是一个编译单位。,2.C程序是由函数构成的即c程序的根本构成单位是函数,一个c程序可以有多个函数,但必须有且只能有一个主函数即main函数;,3.一个函数由两局部构成:即函数首部和函数体;,4.一个C程序总是从main函数开始执行的,结束于主函数,而与主函数的位置无关;,注意:上述四点必须记住。,二、C语言的根本数据类型,整型、字符型包括单个字符和字符串、实型浮点型、枚举类型。,而这些数据类型从应用角度又可分为:常量和变量,1、常量,1)整型常量:有三种书写形式,即:,(1)十进制整数:78,-324,0,(2)八进制整数:以0开头,0123表示(123)8,(3)十六进制整数:以0 x开头,0 x123表示(123)16,注意:c语言中没有二进制的书写形式,2)实型常量浮点数:有两种书写形式,即:,小数形式:由数字和小数点组成必须有小数点,例:0.123,-123.,.123等。,指数形式:数字局部e指数局部,例:123e3 1.2e-5。注意:字母e(或E)之前必须,有数字,e后面指数必须是整数(13位)。,如:e3、e等是不合法的指数形式。,3)字符常量:有两种类型,即:,用单引号括起来的一个字符:a,9,?,转义字符:个别字符前加反斜杠后,该字符转变成另,外的意义。,例如:n表示换行符;231表示ascii码为八进制231的字符;x5A表示ascii码为十六进制5A的字符,字符串常量:用一对双引号括起来的字符序列。,符号常量:用预定义命令#define定义的、用来替代某个常量的符号。例如#define PI 3.1415926,关于标示符的概念:,在c语言中,无论变量、符号常量、函数,都用一些符号,(或符号组合来表示它们的名字,这些符号或组合称,为标示符。标识符的命名规那么是:,必须以英文字母或下划线开头,其后可以跟字母、数字和,下划线。如:a_1,a2等合法,而9_m,a$等非法。,不能与C的关键字重名。如不能用:int、if、while等。,知识补充:字符常量在内存中是用一个字节存放其ascii码;字符串常量比字符个数多一个字节;数值采用二进制补码存放。,2、变量,1整型变量int、long、unsigned),2实型变量float、double、long double),3字符变量char,注:C语言要求程序中使用的变量要先定义后使用即所,谓的显式声明。,关于各类数据的混合运算的问题:,C语言中的根本类型的各种数据可以进行混合运算,运算前先将算式中的数据类型按运算次序向高精度方向变成同一类型,然后计算。至于输出完全取决于输出格式的设定,如printf(“%f,a+5+32768+3.14-0.123456789),三、运算符和表达式,C语言一共有34个运算符,要求大家在记这些运算符时从以下三方面记:,运算符的书写形式;,运算符的运算规那么;,优先级和结合性;,任何级别的c语言考试,都有判断表达式结果的试题,主要检测考生对运算符的运算规那么、优先级和结合性掌握的熟练程度,所以本局部内容属重点内容。,1、算术运算符和算术表达式+、-、*、/、%,1运算规那么:,两个整数相除结果为整数,如5/2=2。(float)5/2=2.5,模运算符(取余运算符%)要求两侧的运算量均为整型量。,2优先级与结合性:同数学一样,可加括号改变。,2、强制类型转换运算符:类型名。,3、自增1、自减1运算符+、-),1运算规那么:,+i与i+相当于i=i+1;-i与i相当于i=i-1。,该运算符只适用于变量,不能用于常数。如8+错误。,+i与i+的区别在于先前者引用后自加,后者相反。,思考题:想一想以下两条语句输出结果分别是什么?,i=3;while(i+4)printf(“%d,i);i=3;while(+i=、=、!=,优先级:高低。,结合性:左结合。,运算规那么:参与关系运算的对象可以是常量、变量、表达式,但关系运算的结果只有两个:1成立时、0不成立时。,7、逻辑运算符!、&、|,关系运算符举例:写出以下表达式的值,a=3,b=4,a+banb,逻辑运算符举例:假设a=3 b=4 c=5写出以下表达式的值,!a|b&c-5 !(b-3)&b&a+b+c,8、位运算符、&、|,“位运算符按二进制位运算;参与运算的只能是整数或字符型数据。,位运算符本身不难,关键是要理解补码知识。,例题:假设a=4;那么:,a=a后a=-5;a=an相当于,a=a/2n;a0后a不变,a-1后a=-5;,知识扩展:,异或运算的用法:a=ab;b=ba;a=ab;后a与b交换。,a=an;a=an;后a的值不变。用于密码,9、条件运算符表达式1?表达式2:表达式3,执行过程:先求解表达式1,如果表达式1为真,那么整个表达,式取表达式2的值,否那么取表达式3的值。,结合性:右结合。,例如:判断以下代码的用途。,char ch;,scanf(“%d,ch=Ab?a:bc?b:cd?c:d;,第一局部内容是一些最根底的东西,内容虽然比较零乱,但非常重要,要求必须在理解的根底上记住。,重点是:运算符及其表达式的求值问题。,第二局部:编程局部,有关编程的根底知识,程序的三种根本结构,顺序结构,选择结构,循环结构,程序中常用的算法,一、有关编程的根底知识,1、C语句的种类:,控制语句:完成一定的控制功能。,函数调用语句:完成函数调用功能。,表达式语句:由各种表达式加分号构成。,空语句:只有分号的语句。,复合语句:由多个语句组成。,注意:允许一行写多个语句,对控制语句也允许将一个语,句拆开写在几行上,对非控制语句假设要拆开分行写,必须加续行符“。每条语句后必须加分号。,2、关于printf()函数用于控制输出格式-重要,一般形式:printf“转换控制字符串,输出表列,转换控制字符串:包含三种信息。,普通字符原样输出。,转义字符按转变后的字符输出。,由%和输出格式控制符组成的输出格式控制符。,输出表列:要输出的量。可以是常量、变量、表达式、,函数等。,例如:char a=B;,printf(“%c117%cnC语言成绩%f,a,a+24,89.9);,又如:int max(int a,int b)main(),return(ab?a:b);int x=3,b=8;,printf(“max=%d,max(x,b);,由%和输出格式控制符组成的输出格式说明:,d格式符:用来输出十进制整数。%md、%lmd等。,o格式符:以八进制形式输出整数,符号位被作为8进制的一局部输出即不会输出负的八进制数。%o、%mo等,%x格式符、%u格式符:分别用于输出16进制数和无符号数,(4)%c格式符:用来输出一个字符。,(5)%s格式符:用来输出一个字符串。%m.ns,(6)%f格式符:用来输出以小数形式表示的实数。,如:%m.nf。,(7)%e格式符:按指数形式输出实数。,2、关于scanf()函数:,形式:scanf(格式控制,地址表列),在scanf中不使用%u说明符,对unsigned型数据,以%d,%o,%x格式输入。,可以指定输入数据所占列数,系统自动按它截取所需数据。scanf(“%3d%3d,输入 12 345 67 那么将12a,67b,345被跳过。,输入数据时不能规定精度。,如:scanf(“%7.2f,非法。,注意:地址表列中一定记住要有地址运算符&。,格式控制里,除了输入格式说明符以外其它的内,容,要求原样输入。,格式控制里,如果只有输入格式说明符,那么输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格键Tab,,3、关于变量的作用域和生存期问题,局部变量:函数体内定义的变量包括主函数内定义的 变量和形式参数,只在定义它的函数体内有效。,全局变量:函数体外定义的变量。从定义处往后开始有效,动态存储变量:,静态存储变量:修饰符static.,说明:局部静态变量编译时赋初值一次,以后每次调用不,再重新赋初值,而是保存上次函数调用结束时的值,局部静态变量定义时不赋初值那么自动赋初值0。,4、关于函数参数的问题,类型:形参、实参。,作用:单向传值可以是数值,也可以是地址。,5、关于函数返回值的问题,通过 return 语句获得返回值;如:return(z)。,定义函数时指定函数返回值的类型;不加类型说明的,按整型处理。即函数返回值为整型时,可不加类型说明,函数值的类型和 return 语句中表达式的值不一致时,以函数类型为准。,被调用函数中没有 return 语句时,带回一个不确定的值。,为了明确表示“不带回值,可以用“void 定义“无类型。如:void print(),6、关于数组问题,定义数组时数组的长度一定是整形常量,并且要用。,如:int a10;float a23;int a(2)或int a2,3,是常犯得错误。,数组元素的表示:数组名下标。下标从0开始排列。,数组名是存放数组首地址的一个常量。所以假设:int a10,那么表示a数组的第4个元素的方法可以用:a3或*(a+3).,一个数组里的所有元素具有相同的数据类型。,使用数组只能引用数组元素,不能整体引用数组。,如:int a10;a10=1,2,3,4,5,6,7,8,9,10;(错误,以下语句为什么不正确:,int a10,i;,for(i=0;i=10;i+)printf(“%d,ai);,7、关于指针的问题指针即地址,使一个指针变量指向一个普通变量:int a,*p=,使一个指针变量指向一个数组:int a10,*p=a;(p=a;p=),指针变量的使用:*-指针运算符。,指针变量的运算:,例如:int a10=1,2,3,*p,i;p=a;,for(i=0;i5;i+),printf(“%-3d,ai);,for(i=0;i5;i+),printf(“%-3d,*p+);,for(i=0;i5;i+),printf(“%-3d,*(a+i);,p=a;,for(i=0;i5;i+),printf(“%-3d,pi);,想一想:,for(i=0;ia=12;,8、关于结构体的问题如上,9、关于链表的问题:明白链表结点的结构特点即可。,10、关于文件操作问题,fopen()文件读/写fclose().,