C语言复习大纲.docx
- 文档编号:5970850
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:45
- 大小:39.75KB
C语言复习大纲.docx
《C语言复习大纲.docx》由会员分享,可在线阅读,更多相关《C语言复习大纲.docx(45页珍藏版)》请在冰豆网上搜索。
C语言复习大纲
C语言复习大纲
第1章概述
重点:
计算机语言,算法的定义与表示方法
难点:
算法的定义与表示方法
知识点:
1.程序设计语言:
机器语言、汇编语言、高级语言。
2.高级语言翻译成机器语言的两种方式:
编译方式、解释方式。
3.算法+数据结构=程序
4.结构化程序设计的三种基本结构:
顺序结构、分支(选择)结构、循环结构
5.算法的表示方法:
自然语言、传统的程序流程图、N-S流程图。
6.结构化程序设计的32字原则:
7.C语言的产生及发展:
UNIX操作系统
8.C语言的特点:
9.C语言由函数组成,有且仅有一个main函数。
10.函数:
说明部分、函数体。
11.一条复杂语句分行书写,用反斜杠(\)续行。
12.注释用/*……*/
第2章输入和输出
重点:
单字符输入/出、格式化输入、格式化输出
难点:
格式化输入、格式化输出
知识点:
1.单字符输入/出:
getchar()、putchar(字符变量)。
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
第3章C语言程序设计基础
重点:
常量、变量、运算符运算规则及其优先级
难点:
运算符运算规则及其优先级
知识点:
1.常量:
◆整型常量:
235、0235、-0x235(前可加负号),长整型:
-12l、-065l、0x55l等。
◆实型常量:
小数形式、指数形式。
◆字符常量:
用单引号,如‘c’(注意转义字符)。
◆字符串常量:
用双引号,如“hglhg”、“a”,内存占用为实际长度加1。
◆符号常量:
无参宏(#define)。
2.变量:
◆标识符命名规则:
4条。
◆各种类型变量的长度。
◆数据类型转换:
自动、强制。
◆注:
强制类型转换只得到所需类型的结果值,原变量或表达式的类型仍为原类型。
如(float)(x+y)
3.各种运算符运算规则及其优先级。
4.补充---逻辑表达式的优化运算:
◆&&运算:
只要算出第一个表达式为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。
5.其它运算符:
条件运算、逗号运算、长度运算符(形式:
sizeof表达式或sizeof(数据类型))
第4章C语言控制结构
重点:
分支结构、循环结构及其嵌套
难点:
循环结构及其嵌套
知识点:
1.if、while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。
如while(a=5)….
2.如果有多条语句,必须用大括号括起,构成复合语句。
3.switch语句中case后面只能是常量值;若执行完某case后的语句没遇到break,则继续执行下一个case语句。
4.循环程序:
注意循环变量的初值、修正值、循环条件等,以及循环中用到的某些变量赋初值,如求累加和变量。
5.一般是先判断条件,再执行循环体;但do—while语句是先执行一遍循环体,再判断条件。
6.break、continue语句。
第5章数组
重点:
数组的定义及其使用,数组中的两种排序方法
难点:
函数数组中的两种排序方法
知识点:
1.数组定义:
inta[10];或inta[N](N需要事先定义为符号常量:
#defineN10);
数组长度必须是常量值,不能是变量,可以是在程序开始前定义的符号常量,进行长度定义。
2.下标引用:
0~N-1,切记不能引用到N。
(inta[5];a[5]=10;这种引用是错误的)
3.数组初始化时可省略长度定义。
4.数组定义后如没有给任何一个元素赋初值,对于static类型,各元素初值为0;对于auto类型,各元素值不定。
5.数组不能整体赋值。
数组中各元素值的输入/出,应使用循环程序逐个输入/出;字符数组例外(gets、puts)。
6.数组中的两种排序方法:
◆冒泡法:
外循环为i=0;i (考试内容) ◆选择法: 外循环为i=0;i (不做考试内容,但是希望同学们记住这种好的排序方法) 7.二维数组: 按行存放;赋初值的5种情况。 8.字符数组: 通常定义较长长度,如: chars[50];通常用于存放字符串,结束标志为‘\0’。 可用字符串常量为其初始化,如: chars[]=“sdkhg”;也可由键盘输入,如gets(s);输出用puts(s); 注意: chars[5]={‘a’,’d’,’f’,’g’,’w’};此种形式不是字符串,无字符串结束标志,仅仅是普通一维字符数组,不能用puts输出,只能用%c格式逐个输出。 字符数组的输入/出还有两种形式: %c、%s。 第6章函数 重点: 函数的定义及其调用,变量的作用域 难点: 函数的调用 知识点: 1.函数定义: intfunc(inta,inty);如定义时没指明函数类型,如: fun(inta);默认是int型,返回值不确定。 2.声明: 函数定义在前,使用在后,可省略函数声明,反之需要在使用前声明。 函数声明的几种变通形式。 ◆函数声明后加分号,而函数定义后没有分号。 3.函数调用: 函数名(实参表); ◆实参与形参个数、类型、位置一致。 ◆形参与实参占据不同的存储单元;形参只在函数调用时才为其分配存储单元,函数调用结束后释放。 ◆实参与形参之间是传值调用,单向传递关系,形参值改变,不会影响实参值。 ◆补充: 函数可嵌套调用,不可嵌套定义。 ◆嵌套调用: 一个函数内部又调用另外一个函数。 ◆递归调用: 一个函数调用它自身。 (考试不作要求) 4.数组作为函数参数: voidfunc(inta[],intn); ◆传递的是实参数组的首地址。 调用时实参是数组名,如func(a,10); 5.多维数组: voidfunc(inta[][5],intn);(可省略第一维,但不能省略其它高维)。 6.从作用域角度,变量分为: 全局变量、局部变量。 ◆局部变量: 在函数内部定义,只能在该函数中使用,包括函数的形参和复合语句中定义的变量,main函数中定义的变量也是局部变量,不能被其它函数使用。 ◆不同函数内定义的同名变量,互不影响,因其作用域不同,内存空间独立。 ◆全局变量: 在函数外部定义,作用域从定义开始到本文件结束。 其间的所有函数都可以使用它,可在各函数间传递值,但容易带来副作用,降低模块独立性。 7.变量的存储类别: auto、static、register、extern。 8.局部变量的存储类别: auto、static、register。 ◆auto型的生存周期时函数被调期间,两次调用之间不保留值。 ◆static型的生存期是整个程序运行期间,保留上一次调用后的值,且只赋一次初值(在程序运行前初始化,默认初值为0)。 如: 9.全局变量的存储类别: static、extern。 ◆全局变量总是存放在静态存储区间,生存期是整个程序运行期间,只赋一次初值,在程序运行前初始化,默认初值为0。 ◆用extern对全局变量加以声明,可以将其作用域扩充到整个文件或其它文件。 ◆定义全局变量时加上static,可将其作用域限制在本文件中,不能被其它文件使用。 10.函数的作用域是全局的,可被其它函数调用。 ◆函数存储类别: static、extern。 默认为extern型。 ◆如: staticintfunc(inta);则函数不被其它文件使用,所以两文件中的同名静态函数,互不干扰。 第7章指针 重点: 指针的定义和使用 难点: 指针的使用 知识点: 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++后指针拨动的单元数(由元素类型决定) 7.一维数组作为函数形参,实际上就是一个指针变量,如: func(inta[],intn); 等同于func(int*a,intn); ◆函数声明的几种变通形式。 ◆所以指针a在函数中值可以改变,如*a++,不同于函数内定义的数组如: intb[5];这里b是指针常量。 8.指针与字符串: char*p,s[50]=“fdjfjdfj”;p=s; ◆可用p间接访问字符串,如指针法: for(;*p! =‘\0’;p++)或下表法: for(i=0;p[i]! =‘\0’;i++) 9.指针形参在函数间传递字符串: voidcopy(char*s1,char*s2){while(*s1++=*s2++);} ◆调用时用字符数组名或指向某字符串的指针做实参, 如: char*p=“sdgygkh”;charss[50];func(ss,p); ◆函数调用的灵活形式: func(ss+2,p)或func(ss,p+2) ◆注意: 输入字符串常用gets函数,但参数应是字符数组名,或已指向某字符数组的指针,如: chars[50],*p;gets(s);是正确的,而gets(p)是错误的,因为p没被赋地址值,无任何指向。 改正: p=s;gets(p); 第8章结构 重点: 结构体和共用体的定义和使用 难点: 结构体和共用体的使用 知识点: 1.结构体: struct,.定义的几种形式。 成员可以是任意类型。 成员引用: 结构体变量名.成员名 ◆占用内存大小为: 各成员占用内存之和。 ◆结构体数组: 同普通数组一样使用。 初始化时注意双重括号。 ◆结构体指针: (*p).成员名或p->成员名 注意: 只能用结构体变量地址赋值,不能赋某成员的地址,如: p=&stu.name;是错误的。 ◆通常定义变量或形参时必须加上struct,如: voidfunc(structstudent*p) {structstudenta[4],temp;……} 2.共用体: union,定义形式同结构体。 成员引用: 共用体变量名.成员名 ◆占用内存大小为: 共用体中较长的成员的长度。 ◆某一时刻只有一个成员起作用,最后一个存放的成员值有效。 ◆结构体类型与共用体类型可互相嵌套使用,即结构体成员的类型也可以是共用体类型,反之亦然。 3.枚举类型: 如: enumweek{sun,mon,tues,wen,thur,fri,sat}day; ◆枚举元素就是枚举变量的可能取值,如: day=mon; ◆枚举元素视为常量,其值就是序号(0~n-1)。 也可以在定义时改变其值,如: enums{a=3,b=1,c=2}; 4.类型标识符自定义: typedef,如: typedefintINTEGER;typedefstruct{……}STU; typedefintARR[10];以后可直接使用INTEGER、ARR、STU类型进行变量定义,书写简略。 ◆注意: 只能为类型另起新名,不能创造新类型,也不能为变量或函数重新命名(define)。 第9章文件 重点: 文件的类型,文件的操作 难点: 文件的操作 知识点: 1.流式文件: 文本文件、二进制文件。 ◆文本文件: 若干字符序列,较长,可用type命令或记事本查看。 ◆二进制文件: 若干字节序列,短,存取速度快,不能用type或记事本等查看。 2.文件操作: 读操作、写操作。 使用有关文件函数来完成,需包含头文件stdio.h 3.操作步骤: ①定义文件类型指针②打开文件③检测指针④读/写⑤关闭文件。 4.打开文件时的使用方式各6种。 5.读/写函数: fgetc(fp)、fputc(ch,fp)、fread(*p,size,n,fp)、fwrite(*p,size,n,fp)、fgets(*str,n,fp)、fputs(*str,fp) fscanf(fp,“格式控制符”,地址列表)、fprintf(fp,“格式控制符”,输出列表),以上函数是简要书写。 6.三个标准设备文件指针: stdin、stdout、stderr 7、有关文件操作函数ferror(fp)、feof(fp)、clearerr(fp); 10.控制循环: while((ch=fgetc(fp))! =EOF)或while(! feof(fp)) EOF是在头文件中定义的符号常量,值为-1代表文件结束。 复习题 一、单选题 1.C语言是在语言的基础上产生的。 A.AB.BC.DD.E 2.在C语言中,每个语句必须以结束。 A.回车符B.冒号C.逗号D.分号 3.标识符和关键字间,要用隔开。 A.回车符B.冒号C.空格D.分号 4.用C语言编写的源文件经过编译,若没有产生编译错误,则系统将。 A.生成可执行目标文件B.生成目标文件 C.输出运行结果D.自动保存源文件 5.下列说法中正确的是。 A.由于C源程序是高级语言程序,因此一定要在TC软件中输入 B.由C源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C.由于C程序是高级语言程序,因此输入后即可执行 D.由于C程序是高级语言程序,因此它由命令组成 6.下列说法中正确的是。 A.C语言程序由主函数和0个或多个函数组成 B.C语言程序由主程序和子程序组成 C.C语言程序由子程序组成 D.C语言程序由过程组成 7.下列说法中错误的是。 A.主函数可以分为两个部分: 主函数说明部分和主函数体 B.主函数可以调用任何非主函数的其他函数 C.任何非主函数可以调用其他任何非主函数 D.程序可以从任何非主函数开始执行 8.以下选项中,正确的C语言整型常量是。 A.32LB.510000C.-1.00D.567 9.以下选项中,是不正确的C语言字符型常量。 A.'a'B.'\x41'C.'\101'D."a" 10.在C语言中,字符型数据在计算机内存中,以字符的形式存储。 A.原码B.反码C.ASCII码D.BCD码 11.字符串的结束标志是。 A.0B.'0'C.'\0'D."0" 12.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为。 A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算 C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算 13.逻辑运算符中,运算优先级按从高到低依次为。 A.&&,! ,||B.||,&&,! C.&&,||,! D.! ,&&,|| 14.表达式! x||a==b等效于。 A.! ((x||a)==b)B.! (x||y)==bC.! (x||(a==b))D.(! x)||(a==b) 15.设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是。 A.0,0B.0,1C.1,0D.1,1 16.intb=0,x=1;执行语句if(x++)b=x+1;后,x,b的值依次为。 A.2,3B.2,0C.3,0D.3,2 17.设有语句inta=3;,则执行了语句a+=a-=a*=a;后,变量a的值是。 A.3B.0C.9D.-12 18.在以下一组运算符中,优先级最低的运算符是。 A.*B.! =C.+D.= 19.设整型变量i值为2,表达式(++i)+(++i)+(++i)的结果是。 A.6B.12C.15D.表达式出错 20.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是。 A.1B.2C.2.0D.2.5 21.sizeof(double)的结果值是。 A.8B.4C.2D.出错 22.设a=1,b=2,c=3,d=4,则表达式: a a:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习 大纲