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

上传人:b****7 文档编号:9898971 上传时间:2023-02-07 格式:DOCX 页数:28 大小:33.04KB
下载 相关 举报
C语言程序设计基础知识期末复习.docx_第1页
第1页 / 共28页
C语言程序设计基础知识期末复习.docx_第2页
第2页 / 共28页
C语言程序设计基础知识期末复习.docx_第3页
第3页 / 共28页
C语言程序设计基础知识期末复习.docx_第4页
第4页 / 共28页
C语言程序设计基础知识期末复习.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

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

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

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

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

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

一、C语言与算法

1.程序:

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

2.C语言的特点:

运算符丰富(共有34种运算符)、数据类型丰富、具有结构化的控制语句。

3.C语言程序的结构特点:

(1).一个程序由一个或多个源程序文件组成:

一个源程序文件中可以包括三个部分:

预处理指令、全局声明、函数定义

(2).函数是C程序的主要组成部分:

一个C程序是由一个或多个函数组成的必须包含一个main函数(只能有一个);每个函数都用来实现一个或几个特定功能;被调用的函数可以是库函数,也可以是自己编制设计的函数。

(3).一个函数包括两个部分函数首部和函数体(声明部分:

定义在本函数中所用到的变量;对本函数所调用函数进行声明;执行部分:

由若干个语句组成,指定在函数中所进行的操作)

(4).程序总是从main函数开始执行

(5).C程序对计算机的操作由C语句完成

(6.)数据声明和语句最后必须有分号

(7.)C语言本身不提供输入输出语句

(8.)程序应当包含注释,增加可读性

4、算法

(1)算法+数据结构=程序

(2)顺序结构、选择结构、循环结构是表示一个良好算法的基本结构

(3)算法的特性:

有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性

(4)算法流程图:

一个流程图包括以下几部分:

表示相应操作的框;带箭头的流程线;框内外必要的文字说明。

流程线不要忘记画箭头,否则难以判定各框的执行次序。

算法流程图的结构特点:

只有一个入口;只有一个出口(一个判断框有两个出口;一个选择结构只有一个出口)结构内的每一部分都有机会被执行到。

也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它;结构内不存在“死循环”。

2、顺序结构设计

5、标识符:

用来标识变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。

C语言对标识符的规定:

(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线

(2)长度:

在TC中最多允许32个字符,建议不要超过8个

如果系统规定标识符长度为8,那么x1234567A和x1234567B会被视为同一标识符。

(3)在C语言中,标识符大小写敏感。

如ABC、aBC、abc分别代表3种不同的标识符

(4)标识符不能与C语言的保留字、系统标准库函数同名。

programto__tofile_2ab1_c3为合法标识符

非法字符举例:

yes?

(含有不合法字符“?

”)123(第一个字符不能为数字)goto(标识符中不允许有空格)

a_80%(出现非法字符“%”)if与关键字相同)

6、常量与变量

注意:

以下变量定义形式是错误的inta,intb;inta;b;

(1)整型常量

·十进制整型:

能出现数字0~9,可带正负号如:

0,11,95,-2

·八进制整型:

以数字0开头的数字串,能出现数字0~7如:

011(十进制9),0111(十进制73)

·十六进制整型:

以0x开头的,能出现数字0~9,字母a~f或A~F如:

0x11(十进制17),0xa5(十进制165)

(2)整型变量基本类型int

(3)浮点型

·浮点型常量十进制小数形式:

由数字与小数点组成(必须有小数点)。

如1.23,-123.,0.0123,.0,0.

指数形式,如123e3或123E3都代表123×103注意字母e或E之前必须有数字,后面必须是整数E-5,.1234e1.2,6.5E为非法的浮点型常量

·浮点型变量floatdouble

(4)字符型

1)字符常量:

分为两类

·用单撇号括起来的一个字符如:

’a’,’9’,’’(空格)是合法字符常量

”a”,’99’是非法字符常量

·转义字符:

以\(反斜杠)开头的特殊形式的字符。

如:

’\n’,’\r’,’\123’,’\x3b’

2)字符变量:

char,占1个字节空间,只能存放一个字符。

存储特点:

在字符变量中实际上存储的是字符的ASCII码,其存储形式与整数的存储形式相同。

注意:

I.字符数据与整型数据可相互赋值,直接运算。

II.大小写字母转换

小写字母减32得到相应的大写字母,如:

‘a’-32得到‘A’

大写字母加32得到相应的小写字母如:

‘B’+32得到‘b’

(5)字符串常量

定义:

用一对双撇号(””)括起来的字符序列。

如:

”hello””Mary””\\aaa\’\n”

存储:

每个字符串尾自动加一个‘\0’作为字符串结束标志

(6)变量赋初值

格式:

类型说明符变量1=常数1[,变量2=常数2[,···]];intx=1,y=1,z=1;

intx=y=z=1;(语法错误)

7、算数运算符和算术表达式

(1)运算符的注意事项

·除法运算符“/”进行求商运算。

对于不同类型的运算对象,除法表达式计算结果的类型也会不同。

如果x,y是整型,则结果为整型,小数部分被略去。

如果x,y其中一个为浮点型量,则结果为浮点型。

·“%”是求余运算。

a%b计算a除以b后的余数,也是a模b的值。

它要求两个运算对象必须是整型,其结果也是整型量。

(2)书写算术表达式的注意事项

·将方括号改成圆括号,即算术表达式内所有的括号均为圆括号,*(乘法)不能省略

·其中π为非字母字符,要用浮点型常量代替

·其中不能出现分数,改用除法运算符,圆括号不能缺少

(3)算数运算符的优先级

优先级:

高----->*/%----->+-低注意:

可以用()来改变运算的顺序.

(2)(3)(4)

8、自增、自减运算符

后缀i++(i--)先使用i的值,再使i的值加(减)1

前缀++i(--i)先使i的值加(减)1,再使用i的值

自增、自减运算只能用于变量,不能用于常量和表达式。

自增、自减运算符高于基本算术运算符。

9、赋值运算符

(1)简单赋值运算符运算符:

=表达式格式:

变量=表达式

·赋值运算符左边必须是变量而不能是表达式;

·赋值表达式的值是赋值号左边变量被赋值后的值;

(2)算术运算符“+—*/%”和赋值运算符“=”结合起来,形成复合赋值运算符。

+=:

加赋值运算符;如a+=3,等价于a=a+3-=、*=、/=、%=与此类似

·复合运算符在书写时,两个运算符之间不能有空格。

·复合运算符右边的表达式计算完成后才参与复合赋值运算;

10、当表达式中的数据类型不同时,要进行类型转换。

转换方式自动(隐式)转换:

系统自动把数据由低级类型向高级转换。

强制转换:

将表达式的运算结果强制转换成指定的数据类型。

自动转换规则强制转换格式:

(目标类型名)(表达式)

double←long←unsigned←int

↑↑

float高←低charshort

逗号运算符与逗号表达式:

运算优先级最低为15级

求解过程先求表达式1的值,再求表达式2的值,···,直至求出表达式n的值。

整个表达式的值为表达式n的值。

x=5*8,6+9先把x赋值为40,表达式的值为15

11、字符数据的简单输入和输出

(1)putchar函数(字符输出函数)形式:

putchar(c)

·c可以是字符常量、字符变量或整型变量。

putchar(100);

·用putchar函数也可输出转义字符。

putchar(‘\n’);/*输出一个换行符*/

putchar(‘\\’);/*输出一个反斜杠\*/

·该函数包含在stdio.h库中,因此应在使用该函数的程序开头加入:

#include

(2)getchar作用:

从终端(如键盘)输入一个字符。

形式:

getchar()无参数

说明:

该函数只能接收一个字符,其函数值可以赋给一个字符变量或整型变量,也可作为表达式的一部分,该函数包含在stdio.h中。

(3)格式输出函数格式:

printf(格式控制,输出表列)

格式控制是用双撇号括起来的字符串,也称“转换控制字符串”,包括2种信息。

1)格式说明:

%[<附加格式字符>]格式字符

将输出列表中的数据转换为指定格式输出。

2)普通字符:

原样输出。

输出表列:

需要输出的数据列表,彼此间用逗号分隔。

它可是任意合法的表达式。

printf("a+b=%5.2f",c)

(4)格式字符

1)d格式符,用来输出十进制整数

%d按整型数据的实际长度输出。

%mdm代表某个数字,指定输出数据的最小宽度。

若数据的位数小于m,则左侧补空格(右对齐),若大于m则按实际位数输出。

%-md与%md类似,只是左对齐

2)c格式符:

用来输出一个字符%c%mc%-mc

3)f格式符:

用来以十进制小数形式输出实数(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(“f=%d,i=%f\n”,5.6,3);显示:

f=1717986918,i=0.000000

2)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。

printf(”c=%c,f=%ff\n“,‘a’,1.5);其中的第一个c和f,第三个f,都是普通字符。

(5)scanf函数scanf(格式控制字符串,地址列表)

格式控制与printf函数类似。

地址列表是由若干个地址组成的表列(以逗号隔开),可以是变量的地址,或字符串的首地址。

scanf(“%d%d%d”,&a,&b,&c);

1)格式符中无普通字符时,可用空格、Tab键、回车键作分隔符。

最后的回车键代表输入结束

2)用c格式符输入字符时,空格、回车、转义字符等均为有效字符。

例:

chara,b,c;

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

正确的输入方法:

键入ABC则a=‘A’,b=‘B’,c=‘C’

若键入:

ABC则a=‘A’,b=‘’(空格),c=‘B’

若键入ABC未送,系统已经认为输入结束了则:

a=‘A’,b=‘\n’(换行符),c=‘B’

若不同类型输入则综合上述规则

3)在格式控制中除格式说明符外若还有其它字符,则应按顺序原样输入。

4)可以指定输入数据所占列数,系统自动按它截取所需数据。

5)%后的“*”附加说明符,用来表示跳过相应的数据。

如:

scanf(“%2d%*3d%2d”,&a,&b);输入1234567则将12↔a,67↔b,345被跳过

6)输入数据时不能规定精度。

如:

scanf(“%7.2f”,&a);错误

7)double类型的变量输入时,要用%lf%le(必须记住!

如:

doublex;

scanf(“%lf”,&x);

3、选择结构程序设计

1、if语句实现选择

if(表达式)语句1表达式可以是关系表达式、逻辑表达式、数值表达式

else语句2

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

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

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

(3)else语句2(有else子句)

(4)if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

elseif(表达式m)语句m

else语句m+1

(在else部分又嵌套了多层的if语句)

说明:

(1)整个if语句可写在多行上,也可写在一行上,但都是一个整体,属于同一个语句

(2)“语句1”…“语句m”是if中的内嵌语句内嵌语句也可以是一个if语句

(3)“语句1”…“语句m”可以是简单的语句,也可以是复合语句

2、关系运算符

(1)关系运算符:

用来对两个数值进行比较的比较运算符

C语言提供6种关系运算符:

①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)优先级高

⑤==(等于)⑥!

=(不等于)优先级低

(2)关系表达式

用关系运算符将两个数值或数值表达式连接起来的式子,关系表达式的值是一个逻辑值,即“真”或“假”,在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

3、逻辑运算符与逻辑表达式

3种逻辑运算符:

&&(逻辑与)||(逻辑或)!

(逻辑非)

判断年龄在13至17岁之内?

age>=13&&age<=17

逻辑运算符的优先次序!

→&&→||(!

为三者中最高)

逻辑表达式的值应该是逻辑量“真”或“假”

编译系统在表示逻辑运算结果时以数值1代表“真”,以0代表“假”

但在判断一个量是否为“真”时以0代表“假”,以非0代表“真”注意:

将一个非零的数值认作为“真”

在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。

4、条件运算符与条件表达式

条件表达式的一般形式为:

表达式1?

表达式2:

表达式3

条件运算符的执行顺序:

求解表达式1

若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值

若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值

条件运算符的结合方向为“自右至左”

5、switch语句

switch语句的作用是根据表达式的值,使流程跳转到不同的语句

switch语句的一般形式:

switch(表达式)整数类型(包括字符型)

{case常量1:

语句1;break

case常量2:

语句2

┇┇┇

case常量n:

语句n

default:

语句n+1

}

优先级顺序:

赋值运算符→&&和||→关系运算符→算术运算符→!

4、循环结构程序设计

1、用while语句实现循环

while语句的一般形式如下:

while(表达式)语句→循环体

循环条件表达式“真”时执行循环体语句“假”时不执行

while循环的特点是:

先判断条件表达式,后执行循环体语句

while循环的作用:

实现“当型”循环

使用说明:

在while的循环体中一定要有使循环趋于结束的语句;否则将形成死循环;

注意循环操作的范围、花括号、分号的使用;

注意给循环变量赋初值的位置及初值的正确性

2、用do...while语句实现循环

do---while语句的特点:

先无条件地执行循环体,然后判断循环条件是否成立

do---while语句的一般形式为:

do

语句

while(表达式);

while和do...while语句的比较

当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同;否则不相同

(1).循环体内必须有使循环趋于终止的条件

while(i<=100)do

{sum=sum+i;{sum=sum+i;

i++;i++;

}}while(i<=100);

(2)注意循环初值与循环条件

i=1;i=0;

while(i<=100)while(i<100)

{sum=sum+i;{i++;

i++;sum=sum+i;

}}

(3)do_while循环的循环体至少执行一次,while循环的循环体可能一次也不执行。

(4)在循环体至少执行一次的前提下,do_while与while循环等价。

3、for语句实现循环

for语句的一般形式为

for(表达式1;表达式2;表达式3)

语句

表达式1:

设置初始条件,只执行一次。

可以为零个、一个或多个变量设置初值执行

表达式2:

循环条件表达式,用来判定是否继续循环。

在每次执行循环体前先执行此表达式,决定是否继续执行循环

表达式3:

作为循环的调整器,例如使循环变量增值,它是在执行完循环体后才进行的

for语句说明:

1)表达式1可省略,但分号不能省;

如:

inti=1,sum=0;

for(;i<=100;i++)

sum=sum+i;

2)若表达式2省略,循环条件永远为真;

如:

for(i=1;;i++)

printf(“%d,”,i);死循环自己编程序时不建议采用,3)表达式3也可省略,但应设法保证循环正常结束;但要能看懂别人的程序

如:

for(i=1;i<=100;)

{sum=sum+i;

i++;

}

4)可只给循环条件;

i=1;

for(;i<=100;)

{sum=sum+i;

i++;

}

5)三个表达式都可省;

for(;;)相当于while

(1)

6)表达式1和表达式3可以是逗号表达式;

如:

for(i=1,sum=0;i<=100;i++)

sum=sum+i;

7)表达式2一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零就执行循环体。

如:

for(;(c=getchar())!

='\n';)

printf("%c,",c);

注:

尽量避免用实型变量控制循环次数。

4、改变循环的执行状态

(1)用break语句提前终止循环

break语句作用:

1)从循环体内跳出,即提前结束循环,接着执行循环下面的语句;

2)break语句只能用于循环语句和switch语句

注意:

在循环中使用了break语句后,循环语句的结束可能有两种:

1.正常结束(正常出口):

由于循环条件表达式为假

2.非正常结束(异常出口):

由break语句引起

(2)continue语句提前结束本次循环

结束本次循环,即跳过循环体语句中下面尚未执行的语句,接着执行下一次是否执行循环的判定

for(n=100;n<=200;n++)

{ if(n%3==0)continue;

 printf(”%d”,n);这段程序等价于if(n%3!

=0)printf(”%d”,n);

}

for语句中执行的是表达式3

(3)break语句和continue语句的区别

continue语句只结束本次循环,而不是终止整个循环的执行

break语句结束整个循环过程,不再判断执行循环的条件是否成立

4、利用数组处理批量数据

1、一维数组

(1)定义一维数组

定义一维数组的一般形式为:

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

说明:

类型符:

数组元素的类型。

数组名:

即数组的名称,其命名方法同变量名。

在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。

注意:

1)在定义数组时,只能使用整常量表达式表明数组的大小,即数组元素的个数,不能是变量。

也就是说,C语言不允许对数组的大小作动态定义.

注意:

intn=10;

intarr[n];

错误,n不是常量而是变量

数组说明中其他常见的错误:

①floata[0];/*数组大小为0没有意义*/

②intb

(2)(3);/*不能使用圆括号*/

③intk,a[k];/*不能用变量说明数组大小*/

一维数组的存储方式:

每个元素都有一个编号(从0开始),称为下标。

(2)引用一维数组

一次只能引用一个数组元素不能引用整个数组所有元素!

也不能引用多个元素

引用数组元素的表示形式为:

数组名[下标]

一个数组元素就是一个普通变量,跟普通变量一样使用。

a[3]=a[2]%4

注意:

引用数组元素时,下标可以是整型常量、变量或整型表达式

对数组中所有元素逐个引用时,通常可使用循环结构。

(3)一维数组的初始化

数组的初始化:

在定义数组的同时,给各数组元素赋值

格式:

类型符数组名[表达式]={初值表};

给部分元素赋初值。

例inta[8]={0,1,2,3,4};后面的用0补齐

给全部元素赋初值时可不指定数组的长度。

inta[]={0,1,2,3,4};注意:

只有在初始化时[]中可以空着。

其他情况不行,例如:

inta[],b[];是错误的

2、二维数组

(1)定义二维数组二维数组定义的一般形式为类型符数组名[常量表达式][常量表达式];

(2)引用二维数组数组名[行下标][列下标]行、列下标都是从0开始

二维数组的存储方式二维数组在内存中按行存放

(3)二维数组的初始化二维数组初始化通常是按行进行的

类型符数组名[表达式1][表达式2]={初值表};

给全部元素赋初值。

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

或写成:

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

给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。

#defineN10

#defineM6

若有定义:

inta[N][M];

二维数组按行输入标准模板:

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

二维数组按行输出标准模板:

for(i=0;i

{for(j=0;j

printf("%d",a[i][j]);

printf("\n");

}

3、字符数组

(1)字符数组的定义:

定义字符数组的方法与定义数值型数组的方法相同,使用关键字char

格式:

char数组名[常量表达式],···;

(2)字符数组的初始化一维字符数组初始化1)逐个字符赋给数组中的各元素

2)用字符串常量初始化数组中的各元素

字符串在实际存储时,是用字符数组存储的,系统会自动的在其尾部添加一个结束标志’\0’二维字符组初始化二维字符数组的初始化,可以采用逐个字符式或者字符串常量的方式

(3)引用字符数组引用字符数组中的元素,与引用其他类型数组元素相同

只能是一个一个字符地引用

(4)字符数组的输入输出

1、利用getchar、putchar逐个处理(用循环结构)

利用格式符%c逐个输入、输出字符for(i=0;i<9;i++)

scanf("%c",&str[i]);

当字符数组存字符串时,可利用格式符%s,可以一次输入、输出整个字符串。

(不用循环结构)

scanf(“%s”,字符数组名);用于输入一个字符串

printf(“%s”,字符数组名);用于输出一个字符串

如果一个字符数组中

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

当前位置:首页 > 高等教育 > 文学

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

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