C语言程序设计基础知识期末复习.pdf

上传人:tbuqq 文档编号:5425969 上传时间:2020-05-06 格式:PDF 页数:14 大小:90.42KB
返回 下载 相关 举报
C语言程序设计基础知识期末复习.pdf_第1页
第1页 / 共14页
C语言程序设计基础知识期末复习.pdf_第2页
第2页 / 共14页
C语言程序设计基础知识期末复习.pdf_第3页
第3页 / 共14页
C语言程序设计基础知识期末复习.pdf_第4页
第4页 / 共14页
C语言程序设计基础知识期末复习.pdf_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《C语言程序设计基础知识期末复习.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计基础知识期末复习.pdf(14页珍藏版)》请在三一文库上搜索。

1、C 语言程序设计基础知识期末复习 一、 C 语言与算法 1.程序:一组计算机能识别和执行的指令。 2.C 语言的特点: 运算符丰富 (共有 34 种运算符 )、数据类型丰富、 具有结构化的控制语句。 3.C 语言程序的结构特点: (1).一个程序由一个或多个源程序文件组成:一个源程序文件中可以包括三个部分:预处 理指令、全局声明、函数定义 (2).函数是C 程序的主要组成部分:一个 C 程序是由一个或多个函数组成的必须包含一 个 main 函数(只能有一个) ;每个函数都用来实现一个或几个特定功能;被调用的函数可以 是库函数,也可以是自己编制设计的函数。 (3).一个函数包括两个部分函数首部和

2、函数体(声明部分:定义在本函数中所用到的变 量;对本函数所调用函数进行声明;执行部分:由若干个语句组成,指定在函数中所进行的 操作) (4). 程序总是从main 函数开始执行 (5). C 程序对计算机的操作由C 语句完成 (6.) 数据声明和语句最后必须有分号 (7.) C 语言本身不提供输入输出语句 (8.) 程序应当包含注释,增加可读性 4、算法(1)算法+ 数据结构= 程序 (2)顺序结构、选择结构、循环结构是表示一个良好算法的基本结构 (3)算法的特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性 (4)算法流程图:一个流程图包括以下几部分:表示相应操作的框;带箭头的

3、流程线;框 内外必要的文字说明。 流程线不要忘记画箭头,否则难以判定各框的执行次序。 算法流程图的结构特点:只有一个入口;只有一个出口(一个判断框有两个出口;一个选择 结构只有一个出口)结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都 应当有一条从入口到出口的路径通过它;结构内不存在“ 死循环 ” 。 二、顺序结构设计 5、标识符:用来标识变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。 C 语言对标识符的规定: (1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 (2)长度:在TC 中最多允许32 个字符,建议不要超过8 个 如果系统规定标识符长度为

4、8,那么 x1234567A 和 x1234567B 会被视为同一标识符。 (3)在 C 语言中,标识符大小写敏感。如ABC 、 aBC、abc分别代表 3 种不同的标识符 (4)标识符不能与C 语言的保留字、系统标准库函数同名。 program to_ _to file_2 ab1_c3 为合法标识符 非法字符举例:yes? (含有不合法字符 “?” )123(第一个字符不能为数字)go to(标识符中 不允许有空格) a_80%(出现非法字符“”)if 与关键字相同) 6、常量与变量 注意:以下变量定义形式是错误的int a,int b; int a;b; ( 1)整型常量 十进制整型:能

5、出现数字09,可带正负号如: 0,11,95,-2 八进制整型:以数字0 开头的数字串,能出现数字07 如: 011(十进制9) ,0111(十进 制 73) 十六进制整型:以0x 开头的,能出现数字09,字母 af 或 AF 如: 0x11(十进制 17), 0xa5(十进制 165) (2)整型变量基本类型int (3)浮点型 浮点型常量十进制小数形式:由数字与小数点组成(必须有小数点)。 如 1.23,-123.,0.0123,.0,0. 指数形式,如123e3 或 123E3 都代表 123103 注意字母e 或 E 之前必须有数字,后面必须 是整数E-5,.1234e1.2,6.5E

6、 为非法的浮点型常量 浮点型变量float double (4)字符型 1)字符常量:分为两类 用单撇号括起来的一个字符如 : a , 9 , (空格)是合法字符常量 ”a” , 99 是非法字符常量 转义字符:以(反斜杠)开头的特殊形式的字符。如:n ,r ,123 ,x3b 2)字符变量:char,占 1 个字节空间,只能存放一个字符。 存储特点:在字符变量中实际上存储的是字符的ASCII 码,其存储形式与整数的存储形式 相同。 注意: I.字符数据与整型数据可相互赋值,直接运算。 II. 大小写字母转换 小写字母减32 得到相应的大写字母,如: a -32 得到 A 大写字母加32 得到

7、相应的小写字母如: B+32 得到 b (5)字符串常量 定义:用一对双撇号(” ”)括起来的字符序列。如:”hello”Mary”n ” 存储:每个字符串尾自动加一个0 作为字符串结束标志 (6)变量赋初值 格式:类型说明符变量 1=常数 1,变量 2=常数 2, ;int x=1,y=1,z=1; int x=y=z=1; (语法错误) 7、算数运算符和算术表达式 (1)运算符的注意事项 除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型 也会不同。如果x,y 是整型,则结果为整型,小数部分被略去。如果x,y 其中一个为浮点型 量,则结果为浮点型。 “”是求余运

8、算。ab 计算 a 除以 b 后的余数,也是a 模 b 的值。它要求两个运算对象 必须是整型,其结果也是整型量。 (2)书写算术表达式的注意事项 将方括号改成圆括号,即算术表达式内所有的括号均为圆括号,*(乘法)不能省略 其中 为非字母字符,要用浮点型常量代替 其中不能出现分数,改用除法运算符,圆括号不能缺少 (3)算数运算符的优先级 优先级:高- -* / % - + - 低注意 :可以用 ( )来改变运算的顺序. (2) (3) (4) 8、自增、自减运算符 后缀i(i)先使用i 的值,再使i 的值加 (减)1 前缀 i ( i)先使 i 的值加 (减)1 ,再使用 i 的值 自增、自减运

9、算只能用于变量,不能用于常量和表达式。 自增、自减运算符高于基本算术运算符。 9、 赋值运算符 (1)简单赋值运算符运算符: = 表达式格式:变量表达式 赋值运算符左边必须是变量而不能是表达式; 赋值表达式的值是赋值号左边变量被赋值后的值; (2)算术运算符“+ * / % ”和赋值运算符“=”结合起来,形成复合赋值运算符。 += :加赋值运算符; 如 a+=3,等价于a=a+3 -=、*= 、/=、%= 与此类似 复合运算符在书写时,两个运算符之间不能有空格。 复合运算符右边的表达式计算完成后才参与复合赋值运算; 10、当表达式中的数据类型不同时,要进行类型转换。 转换方式自动(隐式)转换:

10、系统自动把数据由低级类型向高级转换。 强制转换:将表达式的运算结果强制转换成指定的数据类型。 自动转换规则强制转换格式: (目标类型名) (表达式) double long unsigned int float 高 低 char short 逗号运算符与逗号表达式:运算优先级最低为15 级 求解过程先求表达式1 的值,再求表达式2 的值, ,直至求出表达式n 的值。整个表达 式的值为表达式n 的值。 x=5*8, 6+9 先把 x 赋值为 40,表达式的值为15 11、字符数据的简单输入和输出 (1) putchar 函数(字符输出函数)形式: putchar(c) c 可以是字符常量、字符变

11、量或整型变量。putchar(100); 用 putchar 函数也可输出转义字符。putchar(n); /* 输出一个换行符*/ putchar( ); /* 输出一个反斜杠 */ 该函数包含在stdio.h 库中,因此应在使用该函数的程序开头加入:#include (2)getchar 作用:从终端(如键盘)输入一个字符。 形式: getchar( ) 无参数 说明:该函数只能接收一个字符,其函数值可以赋给一个字符变量或整型变量,也可 作为表达式的一部分,该函数包含在stdio.h 中。 (3)格式输出函数格式: printf (格式控制,输出表列) 格式控制是用双撇号括起来的字符串,也

12、称“转换控制字符串”,包括 2 种信息。 1)格式说明:% 格式字符 将输出列表中的数据转换为指定格式输出。 2)普通字符:原样输出。 输出表列:需要输出的数据列表,彼此间用逗号分隔。它可是任意合法的表达式。 printf (“ a+b = %5.2 f “ , c ) (4)格式字符 1)d 格式符,用来输出十进制整数 %d 按整型数据的实际长度输出。 %md m 代表某个数字,指定输出数据的最小宽度。若数据的位数小于m,则左侧补 空格(右对齐) ,若大于m 则按实际位数输出。%-md 与 %md 类似,只是左对齐 2) c 格式符:用来输出一个字符%c %mc %-mc 3) f 格式符:

13、用来以十进制小数形式输出实数(float,double ) %m.nf 输出数据最小占m 列,其中包括n 位小数和1 位小数点, 右对齐(小 数点也算占一列) %-m.nf 与上面类似,只是左对齐 4)S 格式符:用来输出一个字符串 %s 按字符串原长输出%ms 输出字符串最小占m 列,右对齐,左补空格 %-ms 输出字符串最小占m 列,左对齐,右补空格 %m.ns 字符串占m 列,但只取左端n 个字符,右对齐 %-m.ns 字符串占m 列,但只取左端n 个字符,左对齐 使用说明: 1)格式控制中的格式说明符,必须按从左到右的顺序,与输出表中的每个数据一一对应, 否则出错。 printf( “

14、f=%d, i=%fn ”, 5.6,3); 显示: f= 1717986918,i=0.000000 2)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。 printf( ” c=%c, f=%ffn “, a,1.5); 其中的第一个c 和 f,第三个 f,都是普通字符。 (5)scanf 函数scanf(格式控制字符串,地址列表) 格式控制与printf 函数类似。 地址列表是由若干个地址组成的表列(以逗号隔开) , 可以是变量的地址, 或字符串的首地址。 scanf(“%d%d%d”, 1) 格式符中无普通字符时,可用空格、Tab 键、回车键作分隔符。最后的

15、回车键代 表输入结束 2)用 c 格式符输入字符时,空格、回车、转义字符等均为有效字符。 例:char a,b,c; scanf(“%c%c%c“, 正确的输入方法:键入ABC则 a=A ,b=B ,c=C 若键入:A B C 则 a=A ,b= (空格 ), c=B 若键入A B C 未送,系统已经认为输入结束了则:a=A ,b=n (换行 符) ,c=B 若不同类型输入则综合上述规则 3)在格式控制中除格式说明符外若还有其它字符,则应按顺序原样输入。 4)可以指定输入数据所占列数,系统自动按它截取所需数据。 5)%后的“ *”附加说明符,用来表示跳过相应的数据。 如:scanf(“%2d%

16、*3d%2d ”, 输入1234567则将 12? a, 67 ? b,345 被跳过 6)输入数据时不能规定精度。如:scanf(“%7.2f”,错误 7) double 类型的变量输入时,要用 %lf%le( 必须记住! ! ) 如: double x; scanf(“%lf ”, 三、选择结构程序设计 1、if 语句实现选择 if ( 表达式 ) 语句 1 表达式可以是关系表达式、逻辑表达式、数值表达式 else 语句 2 最常用的3 种 if 语句形式: (1) if ( 表达式 ) 语句 1 (没有 else子句 ) (2).if ( 表达式 ) 语句 1 (3)else 语句 2

17、(有 else子句 ) (4)if (表达式)语句 else if(表达式)语句 else if(表达式)语句 else if(表达式)语句 else 语句 m+1 (在 else 部分又嵌套了多层的if 语句 ) 说明: (1)整个 if 语句可写在多行上,也可写在一行上,但都是一个整体,属于同一个语句 (2) “语句 1”“语句m”是 if 中的内嵌语句内嵌语句也可以是一个if 语句 (3) “语句 1”“语句m”可以是简单的语句,也可以是复合语句 2、关系运算符 (1)关系运算符: 用来对两个数值进行比较的比较运算符 语言提供种关系运算符: (小于 ) = (小于或等于 ) (大于 )

18、= (大于或等于) 优先级高 = (等于 ) != (不等于 ) 优先级低 (2)关系表达式 用关系运算符将两个数值或数值表达式连接起来的式子,关系表达式的值是一个逻辑值,即 “真”或“假”,在 C 的逻辑运算中,以“”代表“真”,以“”代表“假” 3、逻辑运算符与逻辑表达式 3 种逻辑运算符: strlen 函数 - 测字符串长度的函数 一般形式: strlen (字符串 ) 作用 : 它是测试字符串长度的函数 函数的值为字符串中的实际长度,它的返回值是字符串中字符的个数(不包含0 ) strlwr 函数 -转换为小写的函数 一般形式 : strlwr ( 字符串 ) 函数的作用 : 将字符

19、串中大写字母换成小写字母 strupr 函数 -转换为大写的函数 一般形式 : strupr (字符串 ) 函数的作用 : 将字符串中小写字母换成大写字母 六、用函数实现模块化程序设计 1、可以使用哪些函数? 一个 C 程序由两种函数构成: 标准函数(库函数) : 系统提供的,实现各种不同的功能。如printf, scanf, sqrt, fabs ,strlen,等等 使用它们要包含相应的头文件 自定义函数: 用户自己定义的函数。 用户可以把一些具有独立功能的代码定义成函数,有利于程序的模块化和代码的“重用” 2、说明 (1)一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件

20、 (2)一个源程序文件由一个或多个函数以及其他有关内容(如预处理指令、数据声明与定 义等)组成 (3)程序的执行是从main 函数开始的,如果在main 函数中调用其他函数,在调用后流 程返回到main 函数,在main 函数中结束整个程序的运行。 (4)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。即函数不能嵌 套定义 3、定义函数 (1)C 语言要求,在程序中用到的所有函数,必须“先定义,后使用“ 指定函数的名字,以便以后按名调用 指定函数类型,即函数返回值的类型 指定函数参数的名字和类型,以便在调用函数时向它们传递数据 指定函数的功能。这是最重要的,这是在函数体中解决的

21、(2)定义方法 函数的类型 函数名称(形式参数列表)函数首部 数据说明部分 可执行语句函数体 定义无参函数 定义无参函数的一般形式为: 类型名函数名 ( ) 类型名函数名(void) 函数体函数体 定义有参函数 定义有参函数的一般形式为: 类型名函数名 (形式参数表列) 函数体 4、函数的调用 调用一般形式函数名 (实参表 ) (1)函数调用语句 把函数调用单独作为一个语句, 如 printf_star() ;这时不要求函数带回值,只要求函数完成 一定的操作 (2) 函数表达式 函数调用出现在另一个表达式中, 如 c=max(a,b)+2; m = jiecheng(4)*2; 这时要求函数带

22、回一个确定的值以参加表达式的运算 (3)函数参数 函数调用作为另一函数调用时的实参, 如 mmax(a,max(b,c); printf( “ %f”,jiecheng(9); 其中 max(b,c)是一次函数调用,它的值作为max 另一次调用的实参 当用不到函数的返回值时用函数调用语句当要使用函数的返回值时用函数表达式或函数 参数 (4)函数调用时的数据传递 .形式参数和实际参数 形参(形式参数)是函数定义时,参数表中的参数。形式参数只能是变量。 例如: float max( float x, float y ) float ftoc ( float temp) 在函数定义时,参数表中的形参

23、并没有具体的值,系统也不为其分配存储单元。 实参(实际参数)是函数调用时主调函数传送给被调用函数形参的实际值。实参可以是常 量、变量和表达式,实参必须有确定的值。 实参和形参间的数据传递 在调用函数过程中,系统会把实参的值传递给被调用函数的形参,或者说, 形参从实参得到 一个值, 该值在函数调用期间有效,可以参加被调函数中的运算,从实参到形参的值传递是 单向的!没有返回的过程!单向值传递! 实、形参个数相同,类型应一致(相同或赋值兼容)。 例: int n; n=max(4,20); n=max(3.5,7.3); 转化为: n=max(3,7); (5)函数的调用过程 在定义函数中指定的形参

24、,在未出现函数调用时,它们并不占内存中的存储单元。在发生函 数调用时,函数的形参被临时分配内存单元。 调用结束,形参单元被释放实参单元仍保留并维持原值,没有改变 如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值! (6)函数的返回值 希望通过函数调用使主调函数能得到一个确定的值, 这就是函数值(函数的返回值 ) 函数的返回值是通过函数中的return 语句获得的return 语句后面的括号可以不要 一个函数中可以有一个以上的return 语句,执行到哪一个return 语句,哪一个语句起作用 return 后面的值可以是一个表达式。 例如 : max(int x ,in

25、t y) return(? :); 在定义函数时指定的函数类型一般应该和return 语句中的表达式类型一致。 如果函数值的类型和return 语句中表达式的值不一致,则以函数类型为准。 对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。 5、对被调用函数的声明和函数原型 (1)在一个函数中调用另一个函数需要具备如下条件: 被调用函数必须是已经定义的函数(是库函数或用户自己定义的函数) 如果使用库函数,应该在本文件开头加相应的#include 指令 如果使用自己定义的函数,而该函数的位置在调用它的函数后面,应该进行函数声明 (2) 函数声明 作用: 告诉编译系统函数类型、参数个数

26、及类型,以便检查 形式: 函数类型函数名(类型1 形参 1,类型 2 形参 2, ) ; 函数类型函数名(类型1,类型 2, ) ; 函数类型函数名();传统方法 函数声明位置: 主调函数内部开头 或整个文件的开头(所有函数之前) 6、函数的嵌套调用 7、函数的递归调用 (1)直接调用本函数(2)间接调用本函数应使用 if 语句控制结束调用 8、数组作为函数的参数 除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参) 用数组元素作实参时,向形参变量传递的是数组元素的值,单向值传递 用数组名作函数实参时,向形参传递的是数组首元素的地址 说明: 在主调函数与被调函数分别定义

27、数组,且类型应一致 形参数组大小可不指定:C 编译系统不检查形参数组的大小 最好设计一个参数,来指定形参数组大小,也方便确定数组元素个数 数组名做参数,参数传递的是地址:形参数组名只是获得了实参数组的首地址 注意 : 数组名做函数参数时,可以用来存储函数的返回值。 当一个函数有多个同类型的结果时,可用数组做参数来保存结果。 9、局部变量和全局变量 (1)局部变量 在一个函数内部定义的变量只在本函数范围内有效 在复合语句内定义的变量只在本复合语句范围内有效 在函数内部或复合语句内部定义的变量称为“局部变量” 说明: main 中定义的变量,只在main 中有效。 函数形参是函数的局部变量。 不同

28、函数中可以定义同名的变量,它们互不干扰。 ( 2)全局变量 在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,外部变量是全局 变量 (也称全程变量)全局变量可以为本文件中其他函数所共用;有效范围为从定义变量的位 置开始到本源文件结束 全局变量没有赋初值时,系统自动赋为0 同一个 .c 文件中,全局与局部变量同名时,外部变量被屏蔽,即局部优先。 10、变量的存储方式和生存期 从变量值存在的时间(即生存期 )观察,变量的存储有两种不同的方式:静态存储方式和动态 存储方式 静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式 动态存储方式是在程序运行期间根据需要进行动态的分配

29、存储空间的方式 程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中占据固定 的存储单元 函数调用开始时分配,函数结束时释放。在程序执行过程中,这种分配和释放是动态的 不要误认为对外部变量加static 声明后才采取静态存储方式,而不加static 的是采取动态存 储 声明局部变量的存储类型和声明全局变量的存储类型的含义是不同的 对于局部变量来说, 声明存储类型的作用是指定变量存储的区域以及由此产生的生存期的问 题,而对于全局变量来说,声明存储类型的作用是变量作用域的扩展问题 用 static 声明一个变量的作用是: 对局部变量用static 声明,把它分配在静态存储区,该变量在整个程序执行期间不释放,其 所分配的空间始终存在。 对全局变量用static 声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。 注意:用auto、register、static 声明变量时,是在定义变量的基础上加上这些关键字,而不 能单独使用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1