C语言复习提纲.docx

上传人:b****8 文档编号:11173267 上传时间:2023-02-25 格式:DOCX 页数:61 大小:74.91KB
下载 相关 举报
C语言复习提纲.docx_第1页
第1页 / 共61页
C语言复习提纲.docx_第2页
第2页 / 共61页
C语言复习提纲.docx_第3页
第3页 / 共61页
C语言复习提纲.docx_第4页
第4页 / 共61页
C语言复习提纲.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

C语言复习提纲.docx

《C语言复习提纲.docx》由会员分享,可在线阅读,更多相关《C语言复习提纲.docx(61页珍藏版)》请在冰豆网上搜索。

C语言复习提纲.docx

C语言复习提纲

C语言复习提纲

第一章C语言程序设计概述

一、VisualC++6.0开发环境

1、了解VisualC++6.0的安装过程;

2、了解VisualC++6.0的工作界面,菜单和工具栏的使用;

▲二、掌握C语言程序运行的过程

1、编辑:

是指把按照C语法规则编写的程序代码通过编辑器(VisualC++6.0,TurboC3.0)输入计算机,并存盘。

在存盘时,C源文件的扩展名为.c

2、编译:

将C语言源程序编译成目标程序,即对源程序进行编译,并将源程序转换为扩展名为.obj的二进制目标代码(即把已经编辑好的源程序翻译成二进制目标代码的过程)。

3、连接:

将用户程序生成的目标代码文件(.obj)和系统提供的库文件(.lib)中的某些代码连接在一起,生成一个可执行文件(.exe)。

4、执行:

执行生成的可执行代码,并输出结果。

5、调试:

是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。

▲三、结构化程序设计的基本概念

1、概念

以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,将原来较为复杂的问题化简为一系列简单模块的设计,任何模块都可以使用一些基本的结构来实现,任何复杂的程序,都可以使用这些基本结构按一定的顺序组合起来,这些基本结构的特点都是只有一个入口、一个出口,这样的程序设计方法称为结构化程序设计。

2、基本思想

结构化程序设计的基本思想是采用"自顶向下,逐步细化、模块化设计、结构化编码"的程序设计方法和"单入口单出口"的控制结构。

3、三种基本结构

⑴顺序结构⑵选择结构⑶循环结构

4、三种基本结构的特点

⑴只有一个入口⑵只有一个出口

⑶每一个基本结构中的每一部分都有机会执行到

⑷结构内不存在“死循环”

5、设计原则

⑴自顶向下⑶逐步细化⑶模块化设计

⑷结构化编码

▲四、C程序的基本组成:

C程序是由若干个函数构成的,至少有一个主函数main(),main()的位置可以任意,其他各函数在程序中的前后位置也是可以任意的。

程序的执行总是从主函数开始,在主函数中结束。

主函数是可以调用其他任何非主函数的函数,任何非主函数也可以调用其它任何非主函数。

C程序的基本组成:

声明区、主程序区、函数定义区。

1、声明区

处在程序文件的所有函数的外部,一般包含:

包含头文件、宏定义、类定义、结构体定义、函数声明、全局变量声明、条件编译等。

2、主程序区

主程序以main()函数开始,main()函数(主函数)是程序运行时的入口,包含局部变量的声明、函数调用、一般运算、结构控制、对象与结构的处理、文件处理等。

3、函数定义区

函数的定义包含函数说明和函数体两部分。

4、注释

//或/**/为注释,不能嵌套

不产生编译代码,不影响程序的执行效率。

▲五、标识符

1、标识符的定义:

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

2、标识符的命名规则:

由字母、数字或下画线组成,并且第1个字符必须为字母或下画线。

注意:

标识符区分大小写,即大写字母和小写字母的通常意义不同,且不能与关键字重名。

练习1_1:

下列变量标识符哪些是正确的,哪些是不正确的?

a3bcifa!

bc_abcabc_3abca_bc3abc

3、标识符分类:

关键字、预定义标识符、用户自定义标识符。

第二章数据类型、运算符和表达式

▲一、C语言的数据类型

C语言中基本数据类型包括整型、实型、字符型、枚举类型,构造类型有数组、结构体、共用体等。

⑴、基本数据类型(见P17)

⑵、构造类型又称为组合类型,它是由基本类型按照某种规则组合而成的。

⏹数组:

是由具有相同数据类型的元素组成的集合。

⏹结构体:

是由不同的数据类型构成的一种混合的数据结构,构成结构体的成员的数据类型一般不同,并且在内存中分别占据不同的存储单元。

⏹共用体:

是类似于结构体的一种构造类型,与结构体不同的是构成共同体的数据成员共用同一段内存单元。

⏹枚举:

是将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

⑶、指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。

它在内存中占据一个存储单元。

⑷、类是一种数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。

二、常量和变量

⑴、常量:

在程序运行的整个过程中,其值始终保持不变的量。

⏹整型常量:

表示形式有十进制、八进制(以0开头)和十六进制(以0x或0X开头)。

整型常量可以后缀字母L(或l)表示长整数,后缀字母U(或u)表示无符号整数。

⏹实型常量(浮点型常量):

表示形式有一般形式和指数形式。

实型常量缺省为double型(双精度型),如后缀f或F,则为float型(单精度型)。

⏹字符常量:

用单撇号括起来的一个字符。

如'A','*'等。

转义字符:

用反斜杠引导的,具有特定含义的字符(见P22表2-4),如'\n','\367','\x8a'。

注:

C语言字符集中的任何一个字符均可用转义字符来表示。

⏹字符串常量:

用双撇号括起来的字符序列。

如"student","广东广州"等。

⏹布尔常量:

false,true。

⏹符号常量:

✧#define宏名常数

练习2_1:

下列哪些是合法的常量:

①12.7f②0986③0986.012④、0625L⑤87U

⑥-0x98C2⑦01a⑧-6.87E-2⑨1.2e0.5⑩E-3 

⑾0xFF⑿2L⒀'\72'⒁160⒂-0xffff

⒃5E2.0⒄-0xcdf⒅1.3E⒆2E0⒇0668

(21)011(22)0xe(23)-01(24)-0x48a(25)0x

⑵变量:

指程序在运行时其值可改变的量。

⏹变量应先定义(声明其类型和名称)后使用;

⏹变量定义的一般形式为:

◆<数据类型><变名1>,<变名2>,…,<变名n>;

⏹在定义一个变量的同时,也可以给它赋以初值。

练习2_2以下正确的变量标识符是

①3abc②$amount③Num_of_Student④if⑤a!

bc

⑥_above⑦_abc⑧a>b⑨sin⑩day

▲三、运算符和表达式

1、算术运算符和算术表达式

注意:

inti=1.2*3;//结果为3,而不是3.6。

inti=5/3结果为1。

表达式17/5的结果是3,表达式17%5的结果是2。

2、赋值运算符和赋值表达式

注意:

⏹赋值运算符的结合性是从右至左的

⏹复合赋值运算符:

inta=12;a+=a-=a*=a;(a=a+(a=a-(a=a*a)),结果为0)

注意:

在C语言中,定义int a=b=c=3;是错误的,而定义int a,b,c;a=b=c=3;是正确的。

练习2_3设m=9,i=3,则执行运算m%=i+1后,m的值是多少?

结果1。

m=m%(i+1)→m=9%(3+1)→m=1。

3、关系运算符和关系表达式

注意:

⏹关系运算符的优先级低于算术运算符。

例如:

a+b>c等价于(a+b)>c,a!

=b>c等价于a!

=(b>c)

⏹“=”与“==”的区别

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

注意:

⏹逻辑非的优先级最高,逻辑与次之,逻辑或最低

练习2_4若有inta=3,b=0;则表达式a&&!

b的值为1。

练习2_5设有变量说明:

inta=8,b=7;那么执行语句:

printf("%d,%d\n",++a,b--),输出的结果是9,7

练习2_6设a,b,c均为int型变量,则执行语句a=b=3;c=++a||++b;后,b的值为3。

练习2_7设x、y和z都是int型变量,且x=8,y=3,z=5,则表达式x*y/z+6-14%z的值为6。

练习2_8设有定义:

int x=1,y=-1;则执行语句printf("%d\n",(x--&++y);后的输出结果是0。

练习2_9设x,y,z,t均为int型变量,则执行以下语句x=y=z=1;t=++x||++y&&++z;后,x、y、z、t的值分别为2,1,1,1。

6、条件运算符

表达式1?

表达式2:

表达式3

注意:

⏹结合性是自右向左。

a>b?

a:

c>d?

c:

d相当于a>b?

a:

(c>d?

c:

d)

⏹条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。

如:

a>b?

a-b:

b-a相当于a>b?

(a-b):

(b-a)

练习2_10设有变量说明:

intx=3,y=5;那么表达式:

z=x>y?

x:

y运算后,z的值是5。

7、位运算符

位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。

练习2_11inta=5,b=6;a&b=4;a|b=7;a^b=3;~b=-7;b<<2=24;b>>2=1。

注:

在位运算中,操作数左移三位,其结果相当于操作数乘以8。

8、逗号运算符

表达式1,表达式2,……,表达式n

注意:

自左至右,依次计算各表达式的值,“表达式n”的值即为整个逗号表达式的值。

如:

a=3*5,a*4,a+5的值为20。

▲四、运算符的优先级与结合性

1、所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。

自左至右的结合方向,称为左结合性。

反之,称为右结合性。

结合性是C语言的独有概念。

除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。

2、表达式求值

⏹按运算符的优先级高低次序执行。

例如,先乘除后加减。

⏹如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。

例如,算术运算符的结合方向是“自左至右”,即:

在执行“a–b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。

练习2_12设intx=2,y=3,z=4;执行语句行x++;y+=1;z=x+y--以后,x,y和z的值分别是多少?

答案:

3,3,7

练习2_13若有定义intm=2;则逻辑表达式(m=3)&&(m==3)的值是1。

练习2_14如果a=5,b=3,c=7,d=9,则条件表达式a

a:

c

c:

d的值为多少?

结果为7。

练习2_15设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d);后,n的值为2。

练习2_16如果a=5,b=3,c=7,d=9,则条件表达式a

a:

c

c:

d的值为7。

第三章顺序结构程序设计

▲一、顺序结构程序设计——数据的输入和输出

1、格式化输出——printf()函数

⏹printf()函数的一般格式如下:

printf("格式字符串"[,输出项表]);

✧输出项表:

要输出的数据项(可以没有,有多个时以“,”分隔)

✧格式控制串:

包含两种信息

格式说明:

%[修饰符]格式字符,用于指定输出格式

如:

格式控制字符“%c”表示的含义是输出一个字符型数据。

普通字符或转义序列:

原样输出。

⏹格式控制字符:

表3_1printf()函数格式字符

格式转换字符

含义

举例

%d,%i

以十进制整数输出

inta=65;printf(“%d”,a)//65

%c

输出一个字符型数据

inta=65;printf(“%c”,a)//A

%s

输出一个字符串

printf(“%s”,“abcd”)//abcd

%e,%E

以指数形式输出一个浮点型数据(小数位数缺省值为6位)

floatx=984.6;

printf("%e",x);//9.842355e+002

%f(有效数字6-7位)

以十进制小数形式输出一个浮点型数据(小数位数缺省值为6位)

floatx=984.6;

printf("%f",x);//984.235413

%g,%G

按照%e,%f输出宽度较短的格式输出,不输出无意义的0

floatx=23.240;

printf("%g",x);//23.24

⏹修饰符:

表3_2printf()函数修饰符

修饰符

功能

示例

m

数据最小宽度.>m,正常输出;

inta=36;printf("a=%5d\n",a);

//□□□36

.n

对实数,表示输出n位小数;对字符串,表示截取的字符个数

floata=123.456;

printf("a=%8.2f\n",a);//□□123.46

输出的数值靠左端,右边补空格。

printf("s=%-5.3s","guangdong")

//gua

0

小于指定宽度左边补0。

intb=789;

printf("b=%05d\n",b);//00789

如:

在C程序的格式输出中,%d表示输出十进制整数,%6.2f表示输出长度为6位,有2位小数的实数。

printf("s=%-5.3s","student");的输出结果是s=stu。

2、格式化输入——scanf()函数

scanf()函数的一般格式

scanf("格式字符串",输入项首地址表);

注:

①格式输入函数scanf()可以从键盘上接收不同数据类型的数据。

②格式化输出函数(printf())和格式化输入函数(scanf())都包含在头文件“stdio.h”中。

⏹格式字符串。

格式字符串可以包含3种类型的字符:

格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。

格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。

⏹输入项首地址表──由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。

输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。

变量首地址的表示方法:

&变量名

其中“&”是地址运算符。

⏹数据输入操作

✧如果相邻2个格式指示符之间,不指定数据分隔符(如逗号、冒号等),则相应的2个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入1个数据后,按回车,然后再输入下1个数据。

例如,scanf("%d%d",&num1,&num2);

假设给num1输入12,给num2输入36,则正确的输入操作为:

12□36↙

或者:

12↙

36↙

注:

使用“↙”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。

✧“格式字符串”中出现的普通字符(包括转义字符形式的字符),务必原样输入。

例如,scanf("%d,%d",&num1,&num2);

假设给num1输入12,给num2输入36,正确的输入操作为:

12,36↙

练习3_1已有定义double d,f;,数据的输入方式为:

3.69 3.2,根据定义和数据的输入方式,输入函数语句的正确形式为scanf("%lf%lf",&d,&f)。

(scanf("%4.2lf%3.1lf",&d,&f)或scanf("%4.2f%3.1f",&d,&f)都是错误的)

练习3_2有下列程序段

intm=2,n=2;n=m++-1;printf("%d%d\n",m,n);输出结果是3,1。

第四章选择结构程序设计

▲一、算法

1、算法的概念:

算法是指为解决一个问题而采取的确定的、有限的方法和步骤。

2、算法的描述方法最常用的有自然语言、流程图、N-S流程图、PAD图和伪代码等。

▲二、顺序结构程序设计

顺序结构是结构化程序设计中最简单、最常见的一种程序结构。

顺序结构中的语句是按照书写的先后次序执行的,并且每个语句都会被执行到。

练习4_1编写一个程序,从键盘上输入一个学生5门课的成绩,计算出该学生的总成绩和平均成绩,并用自然语言描述算法。

解:

设变量a、b、c、d、e分别表示学生5门课的成绩,sum表示总成绩,aver表示平均成绩,则用自然语言描述算法如下:

①输入学生5门课的成绩a、b、c、d、e;

②求总成绩sum=a+b+c+d+e;

③求平均成绩:

aver=sum/5.0;

④输出总成绩和平均成绩。

程序如下:

#include

main()

{

floata,b,c,d,e,sum,aver;

printf("请输入学生5门课的成绩\n");

scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);

sum=a+b+c+d+e;

aver=sum/5.0;

printf("总成绩=%0.2f,平均成绩=%.2f\n",sum,aver);

}

练习4_2编写一个程序,从键盘输入梯形的上底、下底和高的值(浮点数),计算并输出其面积(保留两位小数),并用N-S结构图表示算法。

解:

设变量a、b、h、area分别表示梯形的上底、下底、高和面积,则用N-S结构图表示算法如下:

输入梯形的上底a、下底b和高h

计算梯形的面积:

area=(a+b)*h/2.0

输出结果。

 

程序如下:

#include

main()

{

floata,b,h,area;

printf("请输入梯形的上底、下底和高\n");

scanf("%f,%f,%f",&a,&b,&h);

area=(a+b)*h/2.0;

printf("梯形的面积为%0.2f\n",area);

}

练习4_3编写一个程序,从键盘输入圆的半径,计算并输出圆的周长和面积(保留两位小数),用伪代码表示出算法。

解:

设用变量r、length、area分别表示圆的半径、周长和面积,则用伪代码表示算法如下:

BEGIN

inputr

length=2*3.14*r

area=3.14*r*r

printlength,area

END

程序如下:

#include

#definePI3.14

main()

{

floatr,length,area;

printf("请输入圆的半径\n");

scanf("%f",&r);

length=2*PI*r;

area=PI*r*r;

printf("圆的周长为%0.2f\n",length);

printf("圆的面积为%0.2f\n",area);

}

▲三、选择结构程序设计

1、if语句

⑴、if语句的一般格式

if(表达式)

{语句组1;}

[else

{语句组2;}]

⏹if语句中的“表达式”必须用“(”和“)”括起来。

表示程序执行的条件,常用关系运算符、逻辑运算符等表示的条件表达式,其结果只有两个值“1”或“0”(成立或不成立)。

如:

表示字符型变量ch是大写英文字符的C语言表达式是ch>='A'&&ch<='Z',要判断字符变量ch中的值是否为数字字符,则其表达式是ch>='0'&&ch<='9'。

⏹else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。

⏹当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。

⑵、if语句的执行过程

⏹缺省else子句时

⏹当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,否则直接转向执行下一条。

⏹指定else子句时

⏹当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,然后转向下一条语句;否则,执行语句组2。

⑶、if语句的嵌套与嵌套匹配原则

⏹if语句允许嵌套。

所谓if语句的嵌套是指,在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。

⏹if语句嵌套时,为避免嵌套的if-else语句的二义性,C语言规定:

else总是与在其之前最近的未配对的if语句组成配对关系。

练习4_4:

铁路托运行李,假设每张车票可按每公斤0.3元托运40公斤以内的行李,如果超过40公斤时,超过的部分每公斤加价0.5元,试编写一道计算行李托运费的程序。

解:

/*程序功能:

计算行李托运费*/

#include

Voidmain()

{

floatw,x;

printf("输入行李的重量:

");

scanf("%f",&w);

if(w>40.0)

x=40.0*0.3+(w-40.0)*0.8;

else

x=w*0.5;

printf("行李重量w=%.2f公斤,托运费x=%.2f元\n",w,x);

}

2.switch语句

⑴、switch语句的一般形式

switch(表达式)

{case常量表达式1:

语句组;break;

case常量表达式2:

语句组;break;

......

case常量表达式n:

语句组;break;

[default:

语句组;[break;]]

}

⑵、执行过程

⏹当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。

⏹如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default后面的语句(组)。

然后,再执行switch语句的下一条。

⑶说明

⏹switch后面的“表达式”,可以是int、char和枚举型中的一种。

⏹每个case子句后面的“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。

⏹case后面的常量表达式仅起语句标号作用,并不进行条件判断。

系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以要退出switch语句,方法是使用break语句。

⏹各case及default子句的先后次序,不影响程序执行结果。

⏹多个case子句,可共用同一语句(组)

⏹用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。

练习4_5以下程序段的输出结果是

intx=7,y=8,z=9;

if(x>y)

 x=y,y=z;z=x;

printf("%d,%d,%d\n",x,y,z);

结果:

7,8,7

练习4_6以下程序的输出结果是

#include

voidmain()

{

intm=5;

if(m++>5)

printf("%d\n",m);

else

printf("%d\n",m--);

}

结果:

6

练习4_7以下程序的输出结果是

#include

voidmain()

{

intk=1,x=0,y=0;

switch(k)

{case0:

y++;

case1:

x++;

case2:

x++;y++;

}

printf("x=%d,y=%d\n",x

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

当前位置:首页 > 高中教育 > 高考

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

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