C语言复习提纲.docx

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

C语言复习提纲.docx

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

C语言复习提纲.docx

C语言复习提纲

《C程序设计》复习提纲

C语言概述、算法

1.程序设计语言:

机器语言、汇编语言、高级语言。

2.高级语言翻译成机器语言的两种方式:

编译方式、解释方式。

3.算法+数据结构=程序

4.结构化程序设计的三种基本结构:

顺序结构、分支(选择)结构、循环结构

5.算法的表示方法:

自然语言、传统的程序流程图、N-S流程图。

6.算法的特性:

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

7.C语言的特点。

8.运行C程序的步骤。

9.C语言由函数组成,有且仅有一个main函数。

10.函数:

说明部分、函数体。

11.一条复杂语句分行书写,用反斜杠(\)续行。

12.注释用/*……*/

13.每个语句由分号(;)结束。

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

1.常量:

◆整型常量:

235、0235、-0x235(前可加负号),长整型:

-12l、-065l、0x55l等。

◆实型常量:

小数形式、指数形式。

◆字符常量:

用单引号,如‘c’。

◆转义字符:

表3-3。

◆字符串常量:

用双引号,如“hglhg”、“a”,内存占用为实际长度加1(结束标志’\0’)。

◆符号常量:

无参宏(#define)。

2.变量:

◆标识符命名规则:

◆各种类型变量的长度:

整型2个字节(VC6.0中4个字节)、浮点型4个字节、字符型1个字节。

◆整型变量的分类:

int、shortint、longint,注意其取值范围,定义的时候可根据实际情况选择数据类型。

◆浮点型变量的分类:

float、double、longdouble,注意其取值范围,定义的时候可根据实际情况选择数据类型。

◆不同数据类型数据之间的混合运算。

不同数据类型之间的运算必须先转换成相同数据类型才能运算。

◆数据类型转换:

自动、强制。

◆注:

强制类型转换只得到所需类型的结果值,原变量或表达式的类型仍为原类型。

如(float)(x+y)

3.各种运算符运算规则及其优先级。

4.自加、自减运算(P57页):

i++,++i,i--,--i。

(不清楚可以在系统中运算查看结果)。

5.其它运算符:

符合运算符、条件运算、逗号运算、长度运算符(形式:

sizeof表达式或sizeof(数据类型))

顺序结构(输入输出)

1.单字符输入/出:

putchar(字符变量)、getchar()。

注意getchar()没有参数。

2.字符串:

gets(字符数组名)、puts(数组名)。

3.格式化输入:

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

格式控制符:

%c、%d、%o、%x、%s、%f

◆若输入long型、double型应加l,如%ld、%lo、%lf

◆格式%s输入字符串不包含空格,且对应地址表列是字符数组名。

◆默认分隔符:

空格、回车、Tab键(也可按域宽截取)

◆格式控制符间不宜加其它字符,如加入其它字符,输入时应原样输入,否则数据接收错误。

如:

scanf(“%d,%d”,&a,&b);输入数据时两数据间要有逗号;scanf(“%d%d”,&a,&b);%d间有两个空格,则输入数据时至少有两个空格。

◆输入函数中%f格式不能带小数,如:

scanf(“%7.2f”,&a)是错误的。

◆%c格式输入单字符,空格字符和转义字符都作为有效字符接收。

◆%*d表示跳过它对应的输入数据。

4.格式化输出:

printf(“格式控制符”,输出列表);

◆格式控制符部分可加入其它字符,原样输出。

如:

提示语或使输出结果清楚显示

◆输出列表:

可以是变量、常量、表达式、函数调用等。

◆转义字符:

以斜杠(\)开始,作为一个字符,如求字符串长度:

“jk\\gk\bl\0k\nlj”,长度为7。

◆注意:

输出long、double型数据,用%ld、%lf

◆可设定输出宽度,m和n,如:

%5d、%6.2f、%.2f

◆负号表示域内向左对齐,如:

%-12d

 

选择结构

1.if语句的三种形式:

◆If(表达式)语句;

◆If(表达式)

{语句1;}

Else

{语句2;}

◆If(表达式1){语句1;}

Elseif(表达式2){语句2;}

Elseif(表达式3){语句3;}

……

Elseif(表达式n){语句n;}

Else{语句n+1;}

2.if语句的嵌套。

3.switch语句结构

Switch(表达式)

{

Case常量表达式1:

语句1;break;

Case常量表达式2:

语句2;break;

……

Case常量表达式n:

语句n;break;

default:

语句n+1;

}

4.if中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。

5.逻辑表达式的优化运算:

◆&&运算:

只要算出第一个表达式为0,第二个表达式不再运算。

◆||运算:

只要算出第一个表达式为1,第二个表达式不再运算。

如:

inti=0,j=0,a=6;if((++i>0)||(++j>0))a++;printf(%d%d%d”,i,j,a);

结果i为1,j为0,a为7。

6.如果有多条语句,必须用大括号括起,构成复合语句。

7.switch语句中case后面只能是常量值;若执行完某case后的语句没遇到break,则继续执行下一个case语句。

8.本章主要是算法构思。

(先考虑好需要那些变量,即数据结构,再考虑怎样求解问题)

 

循环结构

1.主要的循环结构

◆while(表达式){语句;}

◆do

{循环语句序列;}

While(表达式);

◆for(循环变量初值表达式1;循环结束条件表达式2;循环变量增值表达式3)

{循环语句;}

while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。

注意for循环表达式里几种形式(P118—120页)

2.如果有多条语句,必须用大括号括起,构成复合语句。

*

***

*****

*******

*****

***

*

3.循环程序:

注意循环变量的初值、循环条件、修正值等,以及循环中用到的某些变量赋初值,如求累加和变量。

4.一般是先判断条件,再执行循环体;但do—while语句是先执行一遍循环体,再判断条件。

5.注意循环嵌套。

一般是两个或以上的for循环,典型例子如输出一个如右图的菱形图案。

6.break语句跳出整个循环体,不在执行循环、continue语句结束本次循环,可继续执行下一次循环判断。

7.本章主要是算法构思。

(先考虑好需要那些变量,即数据结构,再考虑怎样求解问题)

数组

1.数组定义:

inta[10];或inta[N](N需要事先定义为符号常量:

#defineN10);

数组长度必须是常量值,不能是变量,可以是在程序开始前定义的符号常量,进行长度定义。

2.下标引用:

0~N-1,切记不能引用到N。

(inta[5];a[5]=10;这种引用是错误的)

3.数组初始化时可省略长度定义。

4.数组不能整体赋值。

数组中各元素值的输入/出,应使用循环程序逐个输入/出;字符数组例外(gets、puts)。

6.数组中的排序方法:

冒泡法:

外循环为i=0;i

7.二维数组:

按行存放;赋初值的4种情况P137—138页。

8.字符数组:

通常定义较长长度,如:

chars[50];通常用于存放字符串,结束标志为‘\0’。

可用字符串常量为其初始化,如:

chars[]=“sdkhg”;也可由键盘输入,如gets(s);输出用puts(s);

注意:

chars[5]={‘a’,’d’,’f’,’g’,’w’};此种形式不是字符串,无字符串结束标志,仅仅是普通一维字符数组,不能用puts输出,只能用%c格式逐个输出。

字符数组的输入/出还有两种形式:

%c、%s。

9.字符串函数(P146—150页):

strcpy(s1,s2)、strcat(s1,s2)、strcmp(s1,s2)、strlen(s)、strupr(s)、strlwr(s)

注意参考教材的例题。

函数

1.函数定义:

intfun(inta,inty);如定义时没指明函数类型,如:

fun(inta);默认是int型,返回值不确定。

2.声明:

函数定义在前,使用在后,可省略函数声明,反之需要在使用前声明。

函数声明的几种变通形式。

◆函数声明后加分号,而函数定义后没有分号。

3.函数调用:

函数名(实参表);

◆实参与形参个数、类型、位置一致。

◆形参与实参占据不同的存储单元;形参只在函数调用时才为其分配存储单元,函数调用结束后释放。

◆实参与形参之间是传值调用,单向传递关系,形参值改变,不会影响实参值。

◆补充:

函数可嵌套调用,不可嵌套定义。

◆嵌套调用:

一个函数内部又调用另外一个函数。

◆递归调用:

一个函数调用它自身。

4.从作用域角度,变量分为:

全局变量、局部变量。

◆局部变量:

在函数内部定义,只能在该函数中使用,包括函数的形参和复合语句中定义的变量,main函数中定义的变量也是局部变量,不能被其它函数使用。

◆不同函数内定义的同名变量,互不影响,因其作用域不同,内存空间独立。

◆全局变量:

在函数外部定义,作用域从定义开始到本文件结束。

其间的所有函数都可以使用它,可在各函数间传递值,但容易带来副作用,降低模块独立性。

 

预处理命令

1.预处理命令以“#”开头,末尾不加分号。

在程序编译之前处理。

1.

2.宏替换:

将函数中出现宏名的地方用宏体进行替换。

#defineSQR(x)x*x

main()

{inta,k=3;

a=++SQR(k+1);

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

}

替换后的表达是为a=++k+1*k+1

结果为9

宏体可以是数字、也可以是组成C表达式或语句的其它字符,还可以引用已定义的其它宏名。

◆宏的作用域:

定义宏之后到本源文件结束,可用#undef提前结束。

◆无参宏(符号常量):

#definePI3.14

注意:

函数中双引号内的宏名不替换,如printf(“PI”);

◆有参宏:

#define宏名(形参表)宏体

◆引用:

宏名(实参表)

◆注意有参宏如果宏体和参数没用括号括起,可能有副作用。

◆分析有参宏的程序时,必须先将宏替换后的表达式写到纸上,再分析结果。

◆文件包含:

#include<文件名>搜索系统标准目录

#include“文件名”先搜索当前目录,找不到再搜索系统标准目录

 

指针

1.指针的基本概念:

指针≡地址;

2.指针常量:

某已知变量的地址,或数组名等,:

inta,b[5];此时&a和b就是指针常量(固定值)。

3.指针变量:

如inta,*p=&a;chars[9],*q=s;

◆赋值:

必须赋地址值,如inta,*p;p=&a;

如p=2001;是错误的。

4.间接访问:

*p=5;等同于a=5;

5.指针作为函数的参数,传递的是实参变量的地址,

如:

voidfunc(int*p)

◆调用时用某变量的地址常量,或指向该变量的指针作为实参,如主调函数中有定义inta,*q;q=&a;则可用&a或q作为实参进行调用,即func(&a);或func(q);都是将变量a的地址传递给形参指针p,使指针p指向变量a。

函数中使用*p就是对a的间接访问,就可以改变a的值,或者将结果放入a中。

但形参变量本身改变,反过来不会影响实参指针值。

6.指针与一维数组:

inta[10],*p=a;则a代表数组首地址,是指针常量,

◆元素的表示方法:

a[i]、*(a+i)、p[i]、*(p+i)

◆元素地址:

&a[i]、a+i、&p[i]、p+I

◆区别:

a实指针常量,只不能变,而p是指针变量,可进行增减运算;所以常通过p的增减运算来快速访问数组a,如:

while(p

或while(p

◆理解(*p)++、*p++、*(p++)、p++的含义。

◆执行p++后指针拨动的单元数(由元素类型决定)

 

结构体和共同体

1.结构体:

struct,.定义的几种形式P282—284页。

成员可以是任意类型。

成员引用:

结构体变量名.成员名

◆占用内存大小为:

各成员占用内存之和。

2.共用体:

union,定义形式同结构体。

成员引用:

共用体变量名.成员名

◆占用内存大小为:

共用体中较长的成员的长度。

◆某一时刻只有一个成员起作用,最后一个存放的成员值有效。

◆结构体类型与共用体类型可互相嵌套使用,即结构体成员的类型也可以是共用体类型,反之亦然。

 

文件

1.流式文件:

文本文件、二进制文件。

◆文本文件:

若干字符序列,较长,可用type命令或记事本查看。

◆二进制文件:

若干字节序列,短,存取速度快,不能用type或记事本等查看。

2.文件操作:

读操作、写操作。

使用有关文件函数来完成,需包含头文件stdio.h

3.操作步骤:

①定义文件类型指针FILE*fp;

②打开文件fp=fopen(文件名,打开方式);

③检测指针if(fp==NULL){……exit(0);}

④读/写fgetc(fp)、fputc(ch,fp)

⑤关闭文件。

fclose();

4.打开文件时的使用方式看表13-1,P333页。

”r”、”w”、”a”。

5.fopen()如果不能正确打开文件,则返回值为NULL。

fclose()如果正确关闭文件,则返回值为0,否则返回EOF(-1)。

fputc(ch,fp)以写的方式打开,如果输出成功,则返回值就是输出的字符;如果输出失败,否则返回EOF(-1)。

fgetc(fp)必须以读或读写的方式打开文件,且文件必须存在。

该函数返回一个字符值。

如果读入的文件遇到结束符,返回EOF(-1)。

7.读入文件控制循环:

while((ch=fgetc(fp))!

=EOF)或while(!

feof(fp))

EOF是在头文件中定义的符号常量,值为-1代表文件结束。

C语言复习重点

大体上必须清楚的:

1)程序结构是三种:

顺序结构,循环结构(三个循环结构),选择结构(if和switch)

2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.

4)bit是位是指为0或者1。

byte是指字节,一个字节=八个位.

5)一定要记住二进制如何划成十进制。

概念常考到的:

1、编译预处理不是C语言的一部分,不再运行时间。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低

一、

1)合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

maindefinescanfprintf都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:

2.333e-1就是合法的,且数据是2.333×10-1。

考试口诀:

e前e后必有数,e后必为整数。

.

3)字符数据的合法形式:

'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。

4)整型一般是两个字节,字符型是一个字节,双精度一般是4个字节:

  考试时候一般会说,在16位编译系统,或者是32位系统。

碰到这种情况,不要去管,一样做题。

掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就可以了。

5)转义字符的考查:

在程序中inta=0x6d,是把一个十六进制的数给变量a注意这里的0x必须存在。

在程序中inta=06d,是一个八进制的形式。

在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。

‘\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

是先计算0

所以一定要用(0

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*

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

当前位置:首页 > PPT模板 > 可爱清新

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

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