c语言总复习Word文档下载推荐.docx
- 文档编号:5229497
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:17
- 大小:25.55KB
c语言总复习Word文档下载推荐.docx
《c语言总复习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言总复习Word文档下载推荐.docx(17页珍藏版)》请在冰点文库上搜索。
‘\141’是合法的,0是不能写的。
‘\108’是非法的,因为不可以出现8。
6)算术运算符号的优先级别:
同级别的有的是从左到右,有的是从右到左。
7)强制类型转换:
一定是(int)a不是int(a),注意类型上一定有括号的。
注意(int)(a+b)和(int)a+b的区别。
前是把a+b转型,后是把a转型再加b。
8)表达式的考查:
是表达式就一定有数值。
赋值表达式:
表达式数值是最左边的数值,a=b=5;
该表达式为5,常量不可以赋值。
自加、自减表达式:
假设a=5,++a(是为6),a++(为5);
运行的机理:
++a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这
个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,
再放到变量a中。
进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。
++在前先加后用,++在后先用后加。
逗号表达式:
优先级别最低;
表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
9)位运算的考查:
会有一到二题考试题目。
总的处理方法:
几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。
例1:
chara=6,b;
b=a<
<
2;
这种题目的计算是先要把a的十进制6化成二进制,再做位运算。
例2:
一定要记住,
例3:
在没有舍去数据的时候,<
左移一位表示乘以2;
>
右移一位表示除以2。
10)018的数值是非法的,八进制是没有8的,逢8进1。
11)%符号两边要求是整数。
不是整数就错了。
12) 三种取整丢小数的情况:
1、inta=1.6;
2、(int)a;
3、
第二章
1)printf函数的格式考查:
%d对应整型;
%c对应字符;
%f对应单精度等等。
宽度的,左对齐等修饰。
%ld对应longint;
%lf对应double。
2)scanf函数的格式考察:
注意该函数的第二个部分是&
a这样的地址,不是a;
Scanf(“%d%d%*d%d”,&
a,&
b,&
c);
跳过输入的第三个数据。
3)putchar,getchar函数的考查:
chara=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。
putchar(‘y’)把字符y输出到屏幕中。
4)如何实现两个变量x,y中数值的互换(要求背下来)
不可以把x=y,y=x;
要用中间变量t=x;
x=y;
y=t。
5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)
这个有推广的意义,注意x=(int)x这样是把小数部分去掉。
第三章
特别要注意:
c语言中是用非0表示逻辑真的,用0表示逻辑假的。
1)关系表达式:
表达式的数值只能为1(表示为真),或0(表示假)
当关系的表达是为真的时候得到1。
如9>
8这个是真的,所以表达式的数值就是1;
2)逻辑表达式:
只能为1(表示为真),或0(表示假)
a)共有&
&
||!
三种逻辑运算符号。
b)!
||优先的级别。
c)注意短路现象。
考试比较喜欢考到。
d)要表示x是比0大,比10小的方法。
0<
x<
10是不可以的(一定记住)。
是先计算0<
x得到的结果为1或则0;
再用0,或1与10比较得到的总是真(为1)。
所以一定要用(0<
x)&
(x<
10)表示比0大比10小。
3)if语句
else是与最接近的if且没有else的相组合的。
4)条件表达式:
表达式1?
表达式2:
表达式3
注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。
真前假后。
5)switch语句:
a)一定要注意有break和没有break的差别,书上(34页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。
b)switch只可以和break一起用,不可以和continue用。
第四章
1)三种循环结构:
a)for();
while();
do-while()三种。
b)for循环当中必须是两个分号,千万不要忘记。
c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。
d)do-while()循环的最后一个while();
的分号一定不能够丢。
(当心上机改错)
2)break和continue的差别
记忆方法:
break:
是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。
continue:
是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。
3)嵌套循环
就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。
4)while((c=getchar())!
=’\n’)和while(c=getchar()!
=’\n’)的差别
先看a=3!
=2和(a=3)!
=2的区别:
(!
=号的级别高于=号所以第一个先计算3!
=2)第一个a的数值是得到的1;
第二个a的数值是3。
考试注意点:
括号在这里的重要性。
第五章
函数:
是具有一定功能的一个程序块;
1)函数的参数,返回数值(示意图):
main()
{
inta=5,b=6,c;
c=add(a,b);
printf(“%d”,c);
}
调用函数
a,b是实参
整个函数得到一个数值就是
Add函数的返回数值。
intadd(intx,inty)
intz;
z=x+y;
returnz;
被调用函数
x,y是形式参数
函数返回数值是整型
z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。
程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。
当得到了返回数值后,再顺序的往下执行
2)一定要注意参数之间的传递
实参和形参之间传数值,和传地址的差别。
(考试的重点)
传数值的话,形参的变化不会改变实参的变化。
传地址的话,形参的变化就会有可能改变实参的变化。
3)函数声明的考查:
一定要有:
函数名,函数的返回类型,函数的参数类型。
不一定要有:
形参的名称。
第六章
指针变量的本质是用来放地址,而一般的变量是放数值的。
int*p中*p和p的差别:
*p可以当做变量来用;
*的作用是取后面地址p里面的数值
p是当作地址来使用。
*p++和(*p)++的之间的差别:
改错题目中很重要
*p++是地址会变化。
(*p)++是数值会要变化。
三名主义:
数组名:
表示第一个元素的地址。
数组名不可以自加,他是地址常量名。
(考了很多次)
函数名:
表示该函数的入口地址。
字符串常量名:
表示第一个字符的地址。
第七章
1一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。
对a[3][3]的讨论。
3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。
5、注意a和a[0]、a[1]、a[2]是不同的,它们的基类型是不同的。
前者是一行元素,后三者是一列元素。
二维数组做题目的技巧:
如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。
步骤一:
把他们写成:
第一列 第二列 第三列
a[0]à
1 2 3->
第一行
a[1]à
4 5 6 —>
第二行
a[2]à
7 8 9 ->
第三行
步骤二:
这样作题目间很简单:
*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。
*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。
那么这里就是a[1][2]元素,所以是6。
一定记住:
只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。
数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写
inta[]={1,2}合法。
inta[][4]={2,3,4}合法。
但inta[4][]={2,3,4}非法。
二维数组中的行指针
inta[1][2];
其中a现在就是一个行指针,a+1跳一行数组元素。
搭配(*)p[2]指针
a[0],a[1]现在就是一个列指针。
a[0]+1跳一个数组元素。
搭配*p[2]指针数组使用
还有记住脱衣服法则:
a[2]变成*(a+2)a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3
一、基本概念
所谓词法记号,是指程序中具有独立含义的不可进一步分割的单位,具体地说,C语言的词法记号可分成5类:
关键词、标识符、常量、运算符、分隔符。
关键词是C语言中预定义的符号,他们有固定的含义,用户所定义的任何名字都不得与它们冲突。
标识符是用户自行定义的符号。
用来标识常量、变量、函数、标号等。
C语言要求,所有标识符必须先定义/说明后使用。
ANSI规定,标识符是由字母或下划线(_)开头,后跟零个或多个字母、下划线和数字中任何一个符号所组成的符号序列。
C语言是区分大小写的,因此,int是关键词,而Int则是标识符。
分隔符用于分隔各种词法记号,常用的分隔符有:
[](){}*.:
=;
#。
C语言中,为解决具体问题,要采用各种类型的数据,数据类型不同,它们所能表达的数据范围、精度和所占据的存储空间均不相同。
有符号整数在内存中以补码表示,其最高位为1时表示负数,最高位是0时表示非负数。
浮点型用来表示实型数据。
浮点型分为两种:
单精度和双精度,分别以float和double表示。
字符型用char表示,一般用8位来存放一个字符,实际上存放的是该字符的ASCII码值。
在整型常数后跟有字母l或L时,表示该整型常量是长整型常量。
字符型常量是用单引号括起来单一字符,一个字符常量的值就是该字符的ASCII码值。
字符串常量是双引号括起来的零个、一个或多个字符的序列。
编译程序自动地在每一个字符串末尾添加串结束符’\0’。
一个字符串常量在程序正文中出现,即代表此字符串常量的首地址。
一个变量由一个名字来标识,变量在内存中占据一定的存储单元,该存储单元存放变量的值变量名与内存中的某一存储单元相联系,而变量值是指存放在该存储单元的数据的值。
变量被说明后,根据其类型的不同,拥有大小不同的存储单元。
没有定义/说明的变量,就没有存储单元,因而不能使用。
对于除法运算符(‘/’),若除数和被除数均为整数,则商只取整数部分,舍弃小数部分,如6/4=1;
而若除数或被除数中,只要由一个为实数,则结果是double型的。
如:
6/4.0=1.5。
取模运算符%,它求出%两侧的两个整形数据整除后的余数。
++、--运算符只能用于变量,而不能用于常量和表达式。
++、--运算符可以作为变量的前缀,也可以作为变量的后缀,但用作前缀时,++和--表示先增加或减少再取其值,而用作后缀时,++和--表示先取其值再增加或减少。
关系运算符有:
>
、>
=、<
、<
=、==、!
=,关系运算符的优先级低于算术运算符。
若关系成立,则表达式值为非整数(系统实现时往往为1)零;
若不成立,则表达式值为零。
可见,在C语言中是用非0整数表示真,用0表示假。
逻辑运算符有:
、||、!
逻辑与符号&
的运算规则:
若左右两个操作数均为非零,则返回值为非零,否则返回值为假。
逻辑或符号||的运算规则:
若左右两个操作数有一个为非零,则返回值为非零,否则返回零。
逻辑或符号!
把非零操作数转换为零,而把零操作数转换为非零。
C语言中,&
和||是短路运算符号。
即在从左向右求解一个或多个&
相连的表达式中,只要遇到一个操作数为零,就不再做后面的&
运算,整个表达式的结果为零。
而在从左向右求解一个或多个||相连的表达式中,只要遇到一个操作数为1,就不再做后面的||运算,整个表达式的结果为1。
赋值运算符:
=
由赋值运算符组成的表达式
一般形式为:
<
变量>
赋值运算符>
表达式>
条件表达式:
一般形式:
表达式1>
?
表达式2>
表达式3>
含义:
首先计算<
的值,若为非零,则表达式的值为<
,否则表达式的值为<
。
举例:
max=(a>
b)?
a:
b/*将a、b两数中的较大值送给max*/
逗号运算符:
<
如:
a=3*8,a+2先求a=3*8,得24,然后求解a+2,得26。
故表达式的值为26。
类型转换
当表达式中出现不同类型的操作数时,要按规则将其转换成同一类型,再做运算。
转换规则是:
精度低的操作数类型转换成精度高的操作数类型,占用内存少的操作数类型转换成占用内存多的操作数类型,数据范围小的操作数类型转换成数据范围大的操作数类型。
这种类型转换是系统自动进行的,无需程序员参与。
强制转换:
其一般形式是:
(<
类型名>
)<
例如:
(float)i;
若i是整型,则(float)i是float型,但i仍然是整型,(float)i只是一个中间结果。
允许在说明变量的同时对其初始化。
例如:
intsum=0;
/*sum的类型为整型,初始值为0*/
赋值语句:
由赋值表达式加上一个分号组成,如:
sum=a+b;
而sum=a+b则是一个赋值表达式。
格式输出函数printf
格式:
printf(控制字符串,参数1,参数2,……)
控制字符串:
用双引号括起来的字符串。
包括两种信息:
1.格式说明:
由"
%"
和转换字符组成,如:
%d、%f等,其作用是将与其对应的数据按格式说明指定的格式输出。
格式说明总是以”%”开头,以转换字符结束。
要特别注意,格式串中格式说明的个数,必须与要输出的数据的个数相等,且数据的类型与相应的格式符一致。
常见格式符的含义是:
d:
十进制整数;
f:
浮点小数;
c:
单个字符;
s:
字符串;
u:
无符号整数。
2.普通字符:
即按照原样输出的字符
putchar函数:
putchar(c)功能:
输出字符变量c的值
scanf函数:
格式:
scanf(控制字符串,参数1,参数2,……)
控制字符串中包括普通字符和格式说明,控制字符串中还可以包含空格、制表符或换行符,但这些均被忽略。
对控制字符串中的普通字符,在输入中要输入与这些字符相同的字符;
控制字符串中的格式说明是由字符%开始,到转换字符(其含义与printf的含义相同)结束。
控制字符串后面的所有参数都必须是地址形式的。
getchar函数格式:
getchar(),功能:
接受用户从键盘输入的单个字符。
一个C语言的程序在能正常运行之前,必须经过编辑、编译和连接这三个步骤。
编辑是指利用文本编辑器,输入、修改C语言的源程序(这是一个文本文件),编译是指利用C语言的编译系统将C语言的源程序翻译成一个二进制的目标文件(目标文件仍然是不能运行),连接是指利用C语言的编译系统将C语言的一个或多个目标文件和C语言本身的库文件连接成一个可执行文件。
程序调试:
通过运行程序,发现并改正程序中错误的过程称为程序调试。
通过了编译和连接的C语言源程序,应该说已经没有语法错误了,但很可能还有逻辑错误,任何编译系统都找不出逻辑错误,这只能靠程序员自己去发现并改正。
在TurboC2.0中,主要的程序调试手段有:
单步执行、设置断点、设置观察窗口。
单步执行程序可按F7或F8(按F7可将单步执行延伸到被调用函数的内部,按F8的单步执行仅限于主调函数内),按Ctrl+F7组合键可以添加多个变量到观察窗口,按Ctrl+F8组合键可以设置断点。
语句可以分为五大类:
1.表达式语句:
表达式的后面加一个分号
⑴赋值语句
⑵自加减运算符构成的表达式语句
⑶逗号表达式语句
2.空语句:
只有一个分号,作为语句结束符
3.复合语句:
{"
和"
}"
把一些变量说明和语句组合在一起,又称语句块。
{inta=0,b=1,sum;
sum=a+b;
printf("
%d"
sum);
}
4.函数调用语句:
由一个函数调用加上一个分号组成,如:
printf("
Thisisafunctioncall"
);
5.控制语句,共有9种,即:
⑴if语句
⑵switch语句
⑶while语句
⑷do-while语句
⑸for语句
⑹break语句
⑺continue语句
⑻goto语句
⑼return语句
C语言提供两种分支判断语句:
if语句和switch语句。
其中if语句是单或双分支语句,switch语句是多分支语句,每一种分支语句都有各自的适用场合,编程时由程序员根据具体情况决定使用哪一种分支语句。
if语句的一般形式:
if(<
)
语句1>
[else
语句2>
]
注:
[]中的内容是可选的。
即,if后面可以没有else,但else前面不能没有if。
这里的语句1和语句2被称为if-else结构中的内嵌语句,内嵌语句与程序中的其它独立语句是有区别的,语句1和语句2可以是单条语句也可以是复合语句,整个if-else语句,在程序中被看成是一条语句。
例如,可以充当循环语句的循环体而无需加上一对花括号。
if后面圆括号中的表达式,可以是任何表达式,总之在C程序中是以非零为真,以零为假。
表达式为真时执行语句1,否则执行语句2,语句1和语句2只能执行其中之一。
if语句是可以嵌套的,即if语句中的内嵌语句1和内嵌语句2仍然可以是if语句,这就构成了if语句的嵌套。
而且C语言并不限制嵌套的层次。
这时,尤其要注意if与else的配对关系,为了避免嵌套的if-else的二义性,C语言规定:
else与其前最近的且尚未配对的if配对。
有时,为了明确if与else的配对关系添加一对话括号是必要的,花括号内是一个相对独立的程序单元,花括号内的if与花括号外的else没有关系。
switch语句的一般形式是:
switch(<
{case<
常量表达式1>
语句序列1>
case<
常量表达式2>
语句序列2>
:
常量表达式n>
语句序列n>
default:
语句序列n+1>
case后面必须是常量表达式,而不能是包含变量的表达式,case和常量之间要有空格,case后面的常量之后有"
"
,且所有的case和default包含在"
{}"
里,语句序列中的最后一条语句应该是break,以保证执行完某一语句序列后能跳出switch结构,多个常量表达式可以共用一个语句序列。
循环结构又称重复结构,可以完成重复性、规律性的操作。
C语言共有三种类型的循环语句:
while、do-while和for
while循环的一般格式:
while(<
循环体>
其语义是:
当<
的值为非零时,则执行<
,然后再判断<
的值,只要它不为零,继续执行<
,如此重复,直到<
的值为零为止。
while循环是判断表达式在先,执行循环体在后,若表达式一开始就为假,则循环体一次也不执行。
do-while语句的一般格式是:
do
);
先执行<
,再判别<
,若<
的值为非零,则重复执行<
,直到<
do-while循环是先执行循环体,后判断表达式,即使表达式一开始就为假,循环体也能执行一次。
这两种循环的一般使用形式是:
循环开始前要设置好循环的初始条件,在循环体中要有改变循环条件的语句,以保证循环能正常结束,否则将形成所谓的死循环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习