c语言基础知识复习过程_第1页
c语言基础知识复习过程_第2页
c语言基础知识复习过程_第3页
c语言基础知识复习过程_第4页
c语言基础知识复习过程_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言期末复习之基础知识篇- 杨士帅一 C 语言概述? 程序:一组计算机能够识别和执行的指 令。指令的有序的集合。? 计算机语言:人和计算机交流信息 , 计算 机和人都能识别的语言? C语言的注释:/ 单行注释/*/多行注释。? C语言的结构:由一个或多个源程序文件组成。函数是C程序的基本单位。一个C程序至少含有一个 main函数, 也可以由一个main 函数和若干个其他函数组成。C 的这些特点容易实现程序的模块化。C程序总是从main函数开始执行,而且不论 main 函数的位置如何。? 每个语句和数据的定义后面必须有一个括号。? C语言本身没有输入输出函数,输入输出操作是库函数scanf 和

2、 printf 提供的。二 数据的类型和运算( 一 ) 常量:在程序运行的过程中,其值不能被改变。 TOC o 1-5 h z 整型常量:1000.实型常量:0.34 ,12.34e3.字符常量:a ,n .字符串常量:“ boy”。符号常量: #define PI 3.1416( 二 )变量:在程序运行期间,变量的值是可以改变的。变量必须先定义后使用。刚定义尚未赋值的变量具有随机值。定义变量要同时定义名字和类型。变量名和变量值是两个不同的概念。变量名实际是以这个名字代表一个内存地址。变量值就是该内存单元当前存储的值。( 三 ) 标识符:一个对象的名字。1.2.只能由字母,数字和下划线三种字符

3、组成,而且第一个字符必需为字母或下划线。标识符的长度无限制,但不能以关键字 作为标识符。3. 不合法的标识符:M D.John, #33, 3D64, Include 。(四)数据类型:就是对数据分配储存单元 的安排,包括储存单元的长度以及数据的 存储形式。数据类型宽度Char1BShort int2BInt4BLong int4BFloat4BDouble8BLong double80B整数的默认时signed,各整数类型均可加修 饰符unsigned表示无符号整数类型, unsigned int 可以简写成 unsigned.1.整型:? 一个十进制数是0到9的序列。?十六进制应该加前缀

4、0 x。如:0 xfa , 0 xAE03?八进制应该加前缀 0.如:030.?使用科学记数法,e/E的后面绝对不能在 跟小数,且E/e的前面必须有值。2.字符型:?用单引号括起来的单个字符。如:a , 0.实际上存储的是该数据 的ASCII码。所以也可以把他们看成是整 型量,C语言容许对整型变量赋以字符型, 也允许对字符变量赋以整形值。3.转义字符:转义字符含义bBackspacetTabn换行r回车双引号单引号反斜杠4.字符串:? C语言中并没有字符串类型,用字符数组来处理字符串? 字符串是由一对双引号括起来的字符数列。? 字符串常量和字符常量的区别:? 字符常量由单引号括起来,字符串常量

5、由双引号括起来。? 字符常量只能是单个字符,字符串常量则可以是一个或多个字符。? 字符常量占一个字节的内存空间,字符串所占的内存空间常量等于字符串中的字符数加一。增加的一个字节中存放字符 0 .? ASCII 为 0,这是字符串结束的标志。? Ex:? a 在内存中占一个字节, “ a ” 在内存中占 2 个字节。5. 符号常量:?在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义:#define 标识符常量名 常量值? #define 是一条预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值。习惯上常量的标识符用大写字母,而变量名用小写字母

6、。( 五 ) 运算符:算术运算符:? 整数除法:两个整数相除的结果为整数。Ex: 5/3=1 ,舍去小数部分。-5/3=-1 ,向零取整。? 浮点除法:保证除数和被除数中至少有一个是浮点数。Ex:5/4.0=1.25.? %模运算要求运算元为整数,结果也是整数。Ex: 5%3=2.? C 语言没有乘方运算,但 pow 函数可以实现乘方运算。pow(x,y ) x 的 y 次方。#include.算数运算符的优先级与结合性: 先乘除后加减,从左至右。? 不同类型数据的混合运算:类型的自动转换,编译系统会自动把各操作系统操纵数转化为操作数中最长的类型。EX若int型与float 或double型数

7、据进行运算时, 系统会自动把 int 与 float 型数据转化为 double 型, 然后在进行运算, 结果 时 double 型。自加自减运算符:? i+ , i-: 在使用 i 之后将 i 的值加 / 减 1.? +I,-i :在使用 i 之前,先将i 的值加 /减1.强制类型转换:( double ) a 将 a 转化为 double 类型。短类型- 长类型安全长类型- 短类型有可能会丢失数据。运算符的优先级:()、口、.、(结构体成员运算符)、一 (指向结构体成员运算符)2, 单目运算符 ! (非) 、 (自减) 、 (自加)、(按位取反)、正号(+)、负号( - )3,算术运算符*

8、 、 %、 / , +、 -4,关系运算符 、 = 、 b)?a:b 中? : 为 3目运算符 ! a 为单目运算符 .单目,三目运算符都为自右向左结合,双目运算符除赋值运算符都为自左向右结合关系运算符:,=,=,=,!=. 用来比较两个操作数之间的关系,运算结果为 1 或 0.逻辑运算符:! , &, | 。 用来实现逻辑运算和逻辑判断。用非 0 表示逻辑值的 true , 用 0 表示逻辑值的 false 。条件运算符:三目运算符:表达式a?表达式b:表达式c若表达式的值非0,则返回表达式b 的值;若表达式的 a 的值为0,则返回表达式c 的值。逗号运算符:用来将若干独立的表达式分隔并连接

9、构成一个逗号表达式。赋值运算符:变量二表达式。右结合性。三输入输出函数(一)控制台I/O :程序与外界交流。(二)C语言中所有的I/O都是由库函数完 成的,要用#include将相关头文件包含在 源文件当中。使用标准输入输出函数时要 用到stdio.h 文件。(三)格式输出函数:printf (“格式控制字 符串”,表达式列表)。格式字符意义d,i以带符号的十进制 输出整数o以八进制形式输出 无符号整数(不带前 缀0)X,x以十六进制的无符 号数输出整数(不带 前缀0 x)u以无符号的十进制 形式输出整数f以小数的形式输出单,双精度实数,隐 含6位小数E,e以指数的形式输出 单,双精度实数G,

10、g以或6中较短的 输出宽度输出单、双 精度实数c输出单个字符s输出字符串格式修饰符:%-m.nlf ) %-mld字符说明l用于输出长整形数据以及double型数据m数据显示的最小宽度n对实数,表示输出n位 小数。对字符串,表示截取的 字符个数。-输出的数字或字符在显 示宽度区域内左对齐。? 未指定输出宽度m, 则按实际位数输出。? 未指定小数位数,默认6 位。? 宽度计算中小数点要占一位。? 若数据实际宽度比制定宽度要小,默认右对齐, 即左补空格。 有修饰符- ,则左对齐,即右补空格。? 若数据的实际宽度比指定宽度大,则按实际宽度输出。格式输入函数:用户用指定的格式从盘上把数据输入到指定的变

11、量中。scanf (“格式控制字符” ,变量地址列表) ;? 在 scanf 语句的格式字符串中, 如果没有非格式字符在d%d%比间做输入时的间隔,在输入时要用一个或一个以上的空格或回车或 TAB 键 作为输入数据之间的间隔。? scanf 函数中的格式控制后面应当是变量地址,而不是变量名。? 不能用格式控制来规定输入数据的精度。scanf(%7.2f,&a);scanf(%f, &a);? 如果输入在格式控制字符串中除了格式字符还有其它字符,那么在输入时这些字符将被作为间隔符,要输入相同的字符。? scanf( “ a=%d,b=%d,&a,&b) a=12,b=34在输入数据时遇到以下情况

12、, 则认为是一个数据输入的结束:遇到空格键,回车键, tab 键。满足域宽,如4a输入4位结束。遇到非法字符。? 在输入字符型数据时, 若格式控制字符中没有非格式字符, 则认为所有输入的字符均为有效字符。如: scanf(%c%c%c,&a,&b,&c);只 有当输入为: def 时(即:不能有间隔) , 才能把 d 赋于a, e 赋予b, f 赋予c 。四 流程控制( 一 ) 顺序:? 按语句的先后顺序依次执行。? 复合语句:可用 括起来的多个语句,构成一个复合语句。在C语言中复合语句被认为是一条语句。( 二 ) 分支:if 语句:实现两个分支的选择结构。最常用的 3 种 if 语句的形式:

13、i f ( 表达式 ) 语句 1 ( 没有 else 子 句)if ( 表达式 ) 语句 1else 语句 2( 有 else 子句)if(表达式1 ) 语句1else if(表达式2 )语句2else if(表达式3 )语句311Ielse if(表达式 m)语句 melse 语句 m+1IF 嵌套 : 在 if 语句中又包含一个或多个if语句称为 if 语句的嵌套。 else 总是与它上面最近的为配对的 if 配对。if( ) TOC o 1-5 h z if( )语句1else语句2elseif( )语句3else语句4Switch 语句:实现多分支的选择结构。根据表达式的值, 使流程跳

14、转到不同的语句。 switch 语句的一般格式:switch (表达式) case 常量 1 :语句 1 TOC o 1-5 h z case常量2 :语句2111111IIIcase常量n :语句ndefault :语句 n+1switch 语句中表达式和常量可以是整形以及字符型。任何两个 case 后面的常量不可有相同的值。先计算表达式的值, 在根据表达式的值转向不同的分支。每个case 分支的语句无需用 括起来。每个case 分支都是入口点。break 语句时转移语句,即跳出 switch ,无break 语句, 将执行入口点之后的所有语句。( 三 ) 循环:? While( 表达式 )

15、 语句先判断循环条件表达式的值,若为真,则执行循环体;若为假则不执行循环体语句。? do循环体语句whilie (表达式)先无条件执行一次循环体,然后在判断循环条件是否成立。? For( 表达式 1;表达式 2;表达式 3)循环体语句。表达式1:为循环变量设置初始值。表达式2:判断是否继续循环。表达式3:修改循环变量的值。循环嵌套:一个循环体内又包含另一个完整的循环结构,称之为循环嵌套。内层循环中还可以嵌套循环,这就是多层循环。 3 种循环可以互相嵌套。三种循环的比较:? 一般情况下,三种循环可以互相代替。? 循环中应包含使循环趋于结束的语句。?用while和dowhile循环变量操作应在 w

16、hile 和dowhile 之前完成。而 for语 句可以在表达式 1 中实现循环变量的初始化。? Break : 从循环体中强行退出, 结束整个循 环。? Continue :停止本次循环,直接开始下次 循环。五 函数使用角度来看函数包括库函数和用户自定义函数。库函数:由 C 系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序中包含有该函数的头文件即可在程序中直接调用。用户自定义函数: 用户按照需要自己编写的函数。从函数形式来看: 函数分为无参数函数和有参数函数。无参数函数:无参数函数一般用来执 行 一组操作。 无参数函数可以带回或不带回函数值。有参数函数:在调用函数时,主调函数要

17、通过参数向被调函数传递数据。 函数可以带回或者不带回函数值。一般情况下,被调函数会返回一个函数值,供主函数使用。一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对较大的程序,一般不希望将所有的内容都放在一个文件中, 而是将它们分别放在若干个源文件当中,由若干个源文件组成一个 C程序。一个源程序文件由一个或多个函数及其他相关语句组成。一个源程序文件是一个编译的单位, 在程序进行编译是以源程序文件为单位进行编译的,而不死以函数为单位进行编译的。C程序的执行是从main函数开始的,如果在main 函数的执行过程中调用其他函数, 调用函数结束后流程返回到 main 函数, mai

18、n 函数结束时整个程序运行结束。所有函数都是平行和平等的, 即在定义函数时是分别进行的,互相独立的,一个函数并不从属于另一个函数, 即函数不能嵌套定义。函数间可以互相调用,但不能调用 main 函数, main 函数是被操作系统所调用。定义函数:C 语言要求在程序中遇到的所有函数,必须先定义后使用。函数的定义指明了函数名,函数返回值类型,函数实现的功能以及参数的个数与类型, 将这些信息通知给编译系统。函数定义格式:类型名 函数名(形式参数表列)函数体类型说明了函数返回值的类型,它可以是任何有效类型,如果省略,默认为 int 。参数列表使用逗号分割变量表,各变量表由类型和变量名组成,参数列表可以

19、为空,表示无参,但此括号不能省略,不管定义还是声明时,每个函数参数必须同时含有类型和参数名。空函数: 中类容为空,调用函数,什么也不做,目的时方便以后对功能的扩充,而不会影响程序的结构。函数的返回: return 表达式。用途:使得本函数立即退出,返回到调用语句的地方,返回一个值。函数可以用两种方法停止运行并返回到调用它的地方:执行到函数最后一个语句。遇到 return 语句, 函数的返回值是靠 return语句获得的。如果不希望函数有返回值,将函数类型声明为 void 。除了类型为 void 函数外,其他函数均有返回值,该值由 return 语句决定,如果没有return 语句函数将返回一个

20、不确定的值。如果函数没有指明函数返回值的类型, 默认为 int 。当函数的返回值不是整型时,应该:明确说明函数的类型。函数声明位于第一次调用之前。参数传递 :C语言中的函数调用传递参数是按值传送。如果实参的修改通过形参带回主调函数, 用指针。用数组作为函数参数时, 就把数组的地址传给了参数。函数的作用域:每个函数都是一个独立的代码块, 一个函数的代码属于该函数专有。一个代码块中定义的变量成为局部变量, 局部变量随代码块的产生而产生, 随代码块的退出而消亡。函数的形参也是局部变量。在任何一个函数之外定义的变量成为全局变量,可以被任何一个函数访问,修改。在函数内部用存储类型符 static 说明变

21、量不随函数的运行,退出而产生,消亡。但仍然只能在函数内部访问它。如果全局变量和局部变量同名,局部变量屏蔽全局变量。函数的嵌套调用:C 语言容许在一个在一个函数的定义中出现对另一个函数的调用。 这样就出现了函数的嵌套调用。 即在被调函数中又调用其他函数。六 数组数组是一组有序数据的集合, 下标代表了数据在数组中的序号。用数组名和下标唯一确定数组中的元素。数组中每一个元素都必须属于同一个数据类型。一维数组的定义:类型 数组名 常量表达式 数组名的命名规则与变量命名规则相同,数组也必须先定义后使用。数组类型实际上是数组元素的取值类型。对于同一数组,其所有元素的数据类型都是相同的。数组民是用户定义的标

22、识符, 不能与其他变量名相同。定义数组时, 方括号必须是一个常量表达式,表示数据的元素个数,也称为数组长度。可以是符号常量或常量表达式, 但不能时变量。一维数组的使用:使用数组就是使用他的元素。数组的元素和普通变量一样, 只不过是名字有些特殊。数组元素的一般表示形式:数组名 下标序号 使用数组时,数组下标可以是常量,变量和表达式,从0 开始。一维数组的初始化:Int a10=0,1,2,3,4,5,6,7,8,9;可以只给部分元素赋值, 当 中元素少于元素个数时,系统自动给前面元素赋值,其余元素自动赋0。Int a10=1,2,3,4,5;只能给逐个元素赋值, 而不能给数组整体赋值。给十个元素

23、全部赋 3 ,只能写为:int a10=3,3,3,3,3,3,3,3,3,3;而不能写为: int a10=3;在定义数组时,若要给全部元素赋值,可以省略数组元素的长度。如: int a5=1,2,3,4,5;可写为: int a=1,2,3,4,5;二维数组的定义:类型 变量名 常量表达式 1 常量表达式2二位数组的使用:数组名 下标 1 下标 2数组中元素顺序:C语言中,二维数组是按行储存的。i nt a34a00a01a02a03a10a11a12a13a20a21a22a23二维数组的初始化:Int a53=80,75,92, 61,65,71,59,63,70, 85,87,90,

24、 76,77,85;如对全部元素赋值,行下表可以省略,但列下表不能省略。inta33=1,2,3,4,5,6,7,8,9;可以写为:inta3=1,2,3,4,5,6,7,8,9;字符数组: char c10;字符数组的初始化: 如果初始值小于数组长度,则将这些字符赋给数组中前面的那些元素,其余元素自动定位空字符。字符 0 作为字符串的结束标志。字符串处理函数:输入字符串到字符数组。scanf (”%s” , 字符数组名) ;gets (字符数组名) ;char st20; gets(st);scanf( “ %s” , st);把字符数组中存放的字符串输出:printf( “ %s” , 字

25、符数组名 )puts( 字符数组名 )charst20=” China ”puts(st); printf(“ %s” , st);#includestract( 字符串1 ,字符串2)把字符串 2 链接到字符串 1 后面。Strcpy( 字符串1 ,字符串2)把字符串 2 的内容拷贝的字符串 1(覆盖)strcmp (字符串 1,字符串 2)按照 ASCII 码顺序比较两个字符串, 返回比较结果。 TOC o 1-5 h z 字符串1=字符串2 ,返回值=0;字符串1字符串2 ,返回值0;字符串1字符串2 ,返回值num 来代替。结构体变量做函数参数:用结构体变量的成员作参数:例如,用 st

26、u1.num 或 作函数实参,将实参值传给形参用结构体变量做参数:用结构体变量做实参时, 将结构体变量所占的内存单元的内容全部按顺序传给形参, 形参也必须是同类型的结构体变量。用指向结构体变量:指针做实参, 将结构体变量的地址传给形参。八 指针内存单元的地址称之为指针。变量A中存放变量B的地址,称A是B的指针,即 A 指向 B.定义指针变量:Type *nametype可以时C语言中的任何一种类型。指针运算符:&一元运算符,返回变量的内存地址。* 一元运算符,返回指针所指向变量的值。指针指向变量:Int a;Int *p;P=&a;指针赋值:与其他变量一样,指针变量也可以出

27、现在赋值语句中, 将一个指针变量的值赋给另一个指针变量。指针运算:+和 -Int *p , 当前 p 的值为 2000,由于整型数占4个字节,p+的值将变成2004, p-值将变为 1996.p 每递增一次就指向下一个整形数,递减时也一样。指针比较:int *p=10,*q=20;if(pq)比 较的是两个指针所指向的内存地址的大小指针与数组:指针与数组是紧密相连的。一个变量有地址,一个数组包含若干个元素,每个元素都有相应地址,指针变量可以指向数组元素。Int a10;数组名 a 其实就是一个地址值,记录的数组开始的地址,即 a0 地址。通过指针引用数组元素:(1 ) 下标法,如ai形式(2)指针法,如 *(a+i)或*(p+i)指针数组:样构成数组。指针可以像任何数据类型Int *x10定义的是一个包含10 个整型指针的数组。Ex: 要将变量 a 的地址给数组中的第三个元素。x2=&a;a 的值为: *x2多级间指指向指针的指针可以构造一个指针指向另一个指针,后者指向目标值。指针的初值:指针可以看作是一种特殊的变量类型, 没有赋值的指针是一个随机值,而指针的指向错误会带来严重的错误。给一个指针赋初值null , 将使这个指针为空,即哪也不指。动态内存分配:变量都是非

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论