c语言基础知识.docx

上传人:b****7 文档编号:8707742 上传时间:2023-02-01 格式:DOCX 页数:19 大小:26.10KB
下载 相关 举报
c语言基础知识.docx_第1页
第1页 / 共19页
c语言基础知识.docx_第2页
第2页 / 共19页
c语言基础知识.docx_第3页
第3页 / 共19页
c语言基础知识.docx_第4页
第4页 / 共19页
c语言基础知识.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c语言基础知识.docx

《c语言基础知识.docx》由会员分享,可在线阅读,更多相关《c语言基础知识.docx(19页珍藏版)》请在冰豆网上搜索。

c语言基础知识.docx

c语言基础知识

C语言期末复习之基础知识篇

---杨士帅

一C语言概述

Ø程序:

一组计算机能够识别和执行的指令。

指令的有序的集合。

Ø计算机语言:

人和计算机交流信息,计算机和人都能识别的语言

ØC语言的注释:

//单行注释

/*……*/多行注释。

ØC语言的结构:

1.由一个或多个源程序文件组成。

2.函数是C程序的基本单位。

3.一个C程序至少含有一个main函数,也可以由一个main函数和若干个其他函数组成。

4.C的这些特点容易实现程序的模块化。

5.C程序总是从main函数开始执行,而且不论main函数的位置如何。

Ø每个语句和数据的定义后面必须有一个括号。

ØC语言本身没有输入输出函数,输入输出操作是库函数scanf和printf提供的。

二数据的类型和运算

(一)常量:

在程序运行的过程中,其值不能被改变。

1.整型常量:

1000.

2.实型常量:

0.34,12.34e3.

3.字符常量:

’a’,’\n’.

4.字符串常量:

“boy”。

5.符号常量:

#definePI3.1416

(二)变量:

在程序运行期间,变量的值是可以改变的。

1.变量必须先定义后使用。

2.刚定义尚未赋值的变量具有随机值。

3.定义变量要同时定义名字和类型。

4.变量名和变量值是两个不同的概念。

i.变量名实际是以这个名字代表一个内存地址。

ii.变量值就是该内存单元当前存储的值。

(三)标识符:

一个对象的名字。

1.只能由字母,数字和下划线三种字符组成,而且第一个字符必需为字母或下划线。

2.标识符的长度无限制,但不能以关键字作为标识符。

3.不合法的标识符:

M.D.John,#33,3D64,Include。

(四)数据类型:

就是对数据分配储存单元的安排,包括储存单元的长度以及数据的存储形式。

数据类型

宽度

Char

1B

Shortint

2B

Int

4B

Longint

4B

Float

4B

Double

8B

Longdouble

80B

整数的默认时signed,各整数类型均可加修饰符unsigned表示无符号整数类型,unsignedint可以简写成unsigned.

1.整型:

Ø一个十进制数是0到9的序列。

Ø十六进制应该加前缀0x。

如:

0xfa,0xAE03

Ø八进制应该加前缀0.如:

030.

Ø使用科学记数法,e/E的后面绝对不能在跟小数,且E/e的前面必须有值。

2.字符型:

Ø用单引号括起来的单个字符。

如:

’a’,’0’.实际上存储的是该数据的ASCII码。

所以也可以把他们看成是整型量,C语言容许对整型变量赋以字符型,也允许对字符变量赋以整形值。

3.转义字符:

转义字符

含义

\b

Backspace

\t

Tab

\n

换行

\r

回车

\”

双引号

\’

单引号

\\

反斜杠

4.字符串:

ØC语言中并没有字符串类型,用字符数组来处理字符串。

Ø字符串是由一对双引号括起来的字符数列。

Ø字符串常量和字符常量的区别:

Ø字符常量由单引号括起来,字符串常量由双引号括起来。

Ø字符常量只能是单个字符,字符串常量则可以是一个或多个字符。

Ø字符常量占一个字节的内存空间,字符串所占的内存空间常量等于字符串中的字符数加一。

增加的一个字节中存放字符‘\0’.

ØASCII为0,这是字符串结束的标志。

ØEx:

Ø‘a’在内存中占一个字节,“a”在内存中占2个字节。

5.符号常量:

Ø在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。

符号常量在使用之前必须先定义:

#define标识符常量名常量值

Ø#define是一条预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值。

习惯上常量的标识符用大写字母,而变量名用小写字母。

(五)运算符:

1.算术运算符:

Ø整数除法:

两个整数相除的结果为整数。

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型数据进行运算时,系统会自动把int与float型数据转化为double型,然后在进行运算,结果时double型。

2.自加自减运算符:

Øi++,i--:

在使用i之后将i的值加/减1.

Ø++I,--i:

在使用i之前,先将i的值加/减1.

3.强制类型转换:

(double)a将a转化为double类型。

短类型->长类型安全

长类型->短类型有可能会丢失数据。

4.运算符的优先级:

1,()、{}、[]、.、(结构体成员运算符)、->(指向结构体成员运算符)

2,单目运算符!

(非)、--(自减)、++(自加)、~(按位取反)、正号(+)、负号(-)

3,算术运算符*、%、/,+、-

4,关系运算符<、>、>=、<=,==、!

=

5,逻辑运算符&&和||

6,赋值运算符=

7,逗号运算符(表达式1),(表达式2),(表达式3)...

还有就是左右运算顺序

a+b+为双目运算符,(a>b)?

a:

b中?

:

为3目运算符.!

a为单目运算符.

单目,三目运算符都为自右向左结合,双目运算符除赋值运算符都为自左向右结合.

5.关系运算符:

>,<,>=,<=,==,!

=.用来比较两个操作数之间的关系,运算结果为1或0.

6.逻辑运算符:

,&&,||。

用来实现逻辑运算和逻辑判断。

用非0表示逻辑值的true,用0表示逻辑值的false。

7.条件运算符:

三目运算符:

表达式a?

表达式b:

表达式c

若表达式的值非0,则返回表达式b的值;若表达式的a的值为0,则返回表达式c的值。

8.逗号运算符:

用来将若干独立的表达式分隔并连接构成一个逗号表达式。

9.赋值运算符:

变量=表达式。

右结合性。

三输入输出函数

(一)控制台I/O:

程序与外界交流。

(二)C语言中所有的I/O都是由库函数完成的,要用#include将相关头文件包含在源文件当中。

使用标准输入输出函数时要用到stdio.h文件。

(三)格式输出函数:

printf(“格式控制字符串”,表达式列表)。

格式字符

意义

d,i

以带符号的十进制输出整数

o

以八进制形式输出无符号整数(不带前缀0)

X,x

以十六进制的无符号数输出整数(不带前缀0x)

u

以无符号的十进制形式输出整数

f

以小数的形式输出单,双精度实数,隐含6位小数

E,e

以指数的形式输出单,双精度实数

G,g

以%f或%e中较短的输出宽度输出单、双精度实数

c

输出单个字符

s

输出字符串

格式修饰符:

¡%-m.nlf,%-mld

字符

说明

l

用于输出长整形数据以及double型数据

m

数据显示的最小宽度

n

对实数,表示输出n位小数。

对字符串,表示截取的字符个数。

-

输出的数字或字符在显示宽度区域内左对齐。

Ø未指定输出宽度m,则按实际位数输出。

Ø未指定小数位数,默认6位。

Ø宽度计算中小数点要占一位。

Ø若数据实际宽度比制定宽度要小,默认右对齐,即左补空格。

有修饰符-,则左对齐,即右补空格。

Ø若数据的实际宽度比指定宽度大,则按实际宽度输出。

<4>格式输入函数:

用户用指定的格式从盘上把数据输入到指定的变量中。

scanf(“格式控制字符”,变量地址列表);

Ø在scanf语句的格式字符串中,如果没有非格式字符在“%d%d%d”之间做输入时的间隔,在输入时要用一个或一个以上的空格或回车或TAB键作为输入数据之间的间隔。

Øscanf函数中的格式控制后面应当是变量地址,而不是变量名。

Ø不能用格式控制来规定输入数据的精度。

¡:

scanf("%7.2f",&a);×

scanf("%f",&a);√

Ø如果输入在格式控制字符串中除了格式字符还有其它字符,那么在输入时这些字符将被作为间隔符,要输入相同的字符。

Øscanf(“a=%d,b=%d",&a,&b)a=12,b=34

在输入数据时遇到以下情况,则认为是一个数据输入的结束:

遇到空格键,回车键,tab键。

满足域宽,如%4d,输入4位结束。

遇到非法字符。

Ø在输入字符型数据时,若格式控制字符中没有非格式字符,则认为所有输入的字符均为有效字符。

¡如:

scanf("%c%c%c",&a,&b,&c);

●只有当输入为:

def时(即:

不能有间隔),才能把‘d’赋于a,‘e’赋予b,'f'赋予c。

 

四流程控制

(一)顺序:

Ø按语句的先后顺序依次执行。

Ø复合语句:

可用{}括起来的多个语句,构成一个复合语句。

在C语言中复合语句被认为是一条语句。

(二)分支:

if语句:

实现两个分支的选择结构。

最常用的3种if语句的形式:

1.if(表达式)语句1(没有else子句)

2.if(表达式)语句1

else语句2(有else子句)

3.if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

elseif(表达式m)语句m

else语句m+1

IF嵌套:

在if语句中又包含一个或多个if语句称为if语句的嵌套。

else总是与它上面最近的为配对的if配对。

if()

if()语句1

else语句2

else

if()语句3

else语句4

Switch语句:

实现多分支的选择结构。

根据表达式的值,使流程跳转到不同的语句。

switch语句的一般格式:

switch(表达式)

{case常量1:

语句1

case常量2:

语句2

┇┇┇

case常量n:

语句n

default:

语句n+1

}

switch语句中表达式和常量可以是整形以及字符型。

任何两个case后面的常量不可有相同的值。

先计算表达式的值,在根据表达式的值转向不同的分支。

每个case分支的语句无需用{}括起来。

每个case分支都是入口点。

break语句时转移语句,即跳出switch,无break语句,将执行入口点之后的所有语句。

(三)循环:

ØWhile(表达式)语句

先判断循环条件表达式的值,若为真,则执行循环体;若为假则不执行循环体语句。

Ødo

循环体语句

whilie(表达式)

先无条件执行一次循环体,然后在判断循环条件是否成立。

ØFor(表达式1;表达式2;表达式3)

循环体语句。

表达式1:

为循环变量设置初始值。

表达式2:

判断是否继续循环。

表达式3:

修改循环变量的值。

循环嵌套:

一个循环体内又包含另一个完整的循环结构,称之为循环嵌套。

内层循环中还可以嵌套循环,这就是多层循环。

3种循环可以互相嵌套。

三种循环的比较:

Ø一般情况下,三种循环可以互相代替。

Ø循环中应包含使循环趋于结束的语句。

Ø用while和do…while循环变量操作应在while和do…while之前完成。

而for语句可以在表达式1中实现循环变量的初始化。

ØBreak:

从循环体中强行退出,结束整个循环。

ØContinue:

停止本次循环,直接开始下次循环。

五函数

使用角度来看函数包括库函数和用户自定义函数。

库函数:

由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序中包含有该函数的头文件即可在程序中直接调用。

用户自定义函数:

用户按照需要自己编写的函数。

从函数形式来看:

函数分为无参数函数和有参数函数。

无参数函数:

无参数函数一般用来执行一组操作。

无参数函数可以带回或不带回函数值。

有参数函数:

在调用函数时,主调函数要通过参数向被调函数传递数据。

函数可以带回或者不带回函数值。

一般情况下,被调函数会返回一个函数值,供主函数使用。

一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。

对较大的程序,一般不希望将所有的内容都放在一个文件中,而是将它们分别放在若干个源文件当中,由若干个源文件组成一个C程序。

一个源程序文件由一个或多个函数及其他相关语句组成。

一个源程序文件是一个编译的单位,在程序进行编译是以源程序文件为单位进行编译的,而不死以函数为单位进行编译的。

C程序的执行是从main函数开始的,如果在main函数的执行过程中调用其他函数,调用函数结束后流程返回到main函数,main函数结束时整个程序运行结束。

所有函数都是平行和平等的,即在定义函数时是分别进行的,互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义。

函数间可以互相调用,但不能调用main函数,main函数是被操作系统所调用。

定义函数:

C语言要求在程序中遇到的所有函数,必须先定义后使用。

函数的定义指明了函数名,函数返回值类型,函数实现的功能以及参数的个数与类型,将这些信息通知给编译系统。

函数定义格式:

类型名函数名(形式参数表列)

{

函数体

}

类型说明了函数返回值的类型,它可以是任何有效类型,如果省略,默认为int。

参数列表使用逗号分割变量表,各变量表由类型和变量名组成,参数列表可以为空,表示无参,但此括号不能省略,不管定义还是声明时,每个函数参数必须同时含有类型和参数名。

空函数:

{}中类容为空,调用函数,什么也不做,目的时方便以后对功能的扩充,而不会影响程序的结构。

函数的返回:

return表达式。

用途:

使得本函数立即退出,返回到调用语句的地方,返回一个值。

函数可以用两种方法停止运行并返回到调用它的地方:

执行到函数最后一个语句。

遇到return语句,函数的返回值是靠return

语句获得的。

如果不希望函数有返回值,将函数类型声明为void。

除了类型为void函数外,其他函数均有返回值,该值由return语句决定,如果没有return语句函数将返回一个不确定的值。

如果函数没有指明函数返回值的类型,默认为int。

当函数的返回值不是整型时,应该:

明确说明函数的类型。

函数声明位于第一次调用之前。

参数传递:

C语言中的函数调用传递参数是按值传送。

如果实参的修改通过形参带回主调函数,用指针。

用数组作为函数参数时,就把数组的地址传给了参数。

函数的作用域:

每个函数都是一个独立的代码块,一个函数的代码属于该函数专有。

一个代码块中定义的变量成为局部变量,局部变量随代码块的产生而产生,随代码块的退出而消亡。

函数的形参也是局部变量。

在任何一个函数之外定义的变量成为全局变量,可以被任何一个函数访问,修改。

在函数内部用存储类型符static说明变量不随函数的运行,退出而产生,消亡。

但仍然只能在函数内部访问它。

如果全局变量和局部变量同名,局部变量屏蔽全局变量。

函数的嵌套调用:

C语言容许在一个在一个函数的定义中出现对另一个函数的调用。

这样就出现了函数的嵌套调用。

即在被调函数中又调用其他函数。

六数组

数组是一组有序数据的集合,下标代表了数据在数组中的序号。

用数组名和下标唯一确定数组中的元素。

数组中每一个元素都必须属于同一个数据类型。

一维数组的定义:

类型数组名[常量表达式]

数组名的命名规则与变量命名规则相同,数组也必须先定义后使用。

数组类型实际上是数组元素的取值类型。

对于同一数组,其所有元素的数据类型都是相同的。

数组民是用户定义的标识符,不能与其他变量名相同。

定义数组时,方括号必须是一个常量表达式,表示数据的元素个数,也称为数组长度。

可以是符号常量或常量表达式,但不能时变量。

一维数组的使用:

使用数组就是使用他的元素。

数组的元素和普通变量一样,只不过是名字有些特殊。

数组元素的一般表示形式:

数组名[下标序号]

使用数组时,数组下标可以是常量,变量和表达式,从0开始。

一维数组的初始化:

Inta[10]={0,1,2,3,4,5,6,7,8,9};

可以只给部分元素赋值,当{}中元素少于元素个数时,系统自动给前面元素赋值,其余元素自动赋0。

Inta[10]={1,2,3,4,5};

只能给逐个元素赋值,而不能给数组整体赋值。

¡给十个元素全部赋3,只能写为:

inta[10]={3,3,3,3,3,3,3,3,3,3};

¡而不能写为:

inta[10]=3;

在定义数组时,若要给全部元素赋值,可以省略数组元素的长度。

¡如:

inta[5]={1,2,3,4,5};

¡可写为:

inta[]={1,2,3,4,5};

二维数组的定义:

类型变量名[常量表达式1][常量表达式2]

二位数组的使用:

数组名[下标1][下标2]

数组中元素顺序:

C语言中,二维数组是按行储存的。

●inta[3][4]

a[0][0]a[0][1]a[0][2]a[0][3]

a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]

二维数组的初始化:

Inta[5][3]=]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};

如对全部元素赋值,行下表可以省略,但列下表不能省略。

inta[3][3]={1,2,3,4,5,6,7,8,9};

可以写为:

inta[][3]={1,2,3,4,5,6,7,8,9};

字符数组:

charc[10];

字符数组的初始化:

如果初始值小于数组长度,则将这些字符赋给数组中前面的那些元素,其余元素自动定位空字符。

字符’\0‘作为字符串的结束标志。

字符串处理函数:

输入字符串到字符数组。

scanf(”%s”,字符数组名);

gets(字符数组名);

●charst[20];gets(st);scanf(“%s”,st);

把字符数组中存放的字符串输出:

¡printf(“%s”,字符数组名)

¡puts(字符数组名)

●charst[20]=”China”;puts(st);printf(“%s”,st);

#include

stract(字符串1,字符串2)

把字符串2链接到字符串1后面。

Strcpy(字符串1,字符串2)

把字符串2的内容拷贝的字符串1(覆盖)

strcmp(字符串1,字符串2)

按照ASCII码顺序比较两个字符串,返回比较结果。

字符串1=字符串2,返回值=0;

字符串1>字符串2,返回值>0;

字符串1<字符串2,返回值<0;

Strlen(字符串)

返回字符串中包含的字符个数(不包括结束标志‘\0’)

Strlwr(字符串)将大写字母转化成小写字母。

strupr(字符串)将小写字母转换成大写字母。

‘A’~’Z’:

41H-50H

‘a’~’z’:

61H-70H

七结构体

定义结构体的类型:

struct结构体名

{

成员列表=类型名+变量名;

};

结构体可以嵌套引用,即一个结构体的定义中可以引用其他结构体类型。

structDate   

{intmonth;intday;intyear;};

  structStu

  {intnum;charname[20];

charsex;intage;

structDatebirthday;

charaddr[30];

};

结构体类型与结构体变量是不同的概念,相当于变量类型和变量。

只能对变量赋值,存取或运算,而不能对一个类型赋值,存取或运算。

在编译时,对类型是不分配空间的,只对变量分配空间。

定义结构体类型的变量:

1.先声明结构体类型,再定义该类型变量

structstudent

{

intnum;charname[20];

charsex;intage;

floatscore;charaddr[30];

};

structstudentstu1,stu2;

2.在声明类型的同时定义变量

structStudent

{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];

}student1,student2;

3.不指定类型名而直接定义结构体类型变量

●其格式为:

struct

{

成员表列

}变量名表列;

结构体变量的初始化:

Structdate

{

Intmonth;

Intday;

Intyear;

};

Structdatebirthday={10,22,83};

使用结构体变量:

只能通过成员运算符引用结构体变量的各个成员,一般不能对结构体变量整体使用。

¡结构体变量名.成员名

¡如:

stu1.numbirthday.year

如果成员本身又是一个结构体类型,则要用若干个成员运算符,一级一级找到最低一级的成员。

¡如:

stu2.birthday.day

对结构体变量的成员可以像普通变量一样进行各种运算。

stu1.num++;

类型定义在前,不分配内存,变量定义后,给变量分配一段连续的内存单元。

结构体成员名可与程序中的其他变量同名,二者占不同的内存单元互不干扰。

结构体数组:

就是数组中的每一个元素都是一个结构体类型的变量。

structPerson

{

charname[20];

intnum;

}teacher[3]={“Li”,1,“Zhang”,2,“Sun”,3};

指向结构体变量的指针:

指向结构体对象的指针变量既可以指向结构体变量,也可以用来指向结构体数组中的元素。

指向结构图变量的指针,其类型必须与结构体变量类型相同。

structStudent*p;

为了使用方便和直观,C语言允许把(*p).num用p->num来代替。

结构体变量做函数参数:

用结构体变量的成员作参数:

例如,用stu[1].num或stu[2].name作函数实参,将实参值传给形参

用结构体变量做参数:

用结构体变量做实参时,将结构体变量所占的内存单元的内容全部按顺序传给形参,形参也必须是同类型的结构体变量。

用指向结构体变量:

指针做实参,将结构体变量的地址传给形参。

八指针

内存单元的地址称之为指针。

变量A中存放变量B的地址,称A是B的指针,即A指向B.

定义指针变量:

Type*name

type可以时C语言中的任何一种类型。

指针运算符:

&一元运算符,返回变量的内存地址。

*一元运算符,返回指针所指向变量的值。

指针指向变量:

Inta;

Int*p;

P=&a;

指针赋值:

与其他

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

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1