C复习提纲

更新时间:2023-11-12 17:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

c程序设计语言复习提纲 一. 数据的定义 (一)数据类型 1. 基本类型

基本类型指整型(int)、实型(float、double)和字符型(char)。 (1)常量

①八进制整数:0123 十六进制整数:0x123 长整型常量:123l ②实数的浮点表示法:123.0 实数的科学计数法:1.23e2 ③字符的转义序列:?\\?(换行)、?5?(?a?)、?\\\\x61?(?a?)

④符号常量:#define pi 3.14 常用符号常量null(空值0)、eof(文件结束符-1) (2)变量

①变量的定义:int a;变量名a为一个符号地址,编译连接时对应一个内存地址,该地址代表的内存单元能够存放一个整数。

②变量的初始化:a=3;通过变量名a找到相应的内存地址,将数据3保存在此内存单元中。 2. 构造类型

构造类型包括数组和结构。 (1)数组

①一维数组的定义:int a[5]; 一维数组的初始化:int a[5]={1,2,3,4,5}; ②二维数组的定义和初始化:int b[2][3]={1,2,3,4,5}; ③数组元素的引用:a[0]=1; b[1][2]=0;

④一维字符数组(字符串):char c[]=”abc”;(4个元素,c[3]=?{post.content}?) ⑤二维字符数组(字符串数组):char str[3][20]={“china”,”usa”,”russia”}; (2)结构

①结构类型的定义:struct rectangle{float length;float width;}; ②结构变量的定义和初始化:struct rectangle rec1={20.0,10.0}; ③结构变量成员的引用:rec1.length=25.0; 3. 指针

(1)指针和地址的概念 变量名 a p 指针变量

变量值(内存单元内容) 指针变量的值(地址) 内存单元地址 1000 (2)指针变量的定义和初始化 int a,*p; p=&a;

(3)通过指针引用指向实体 *p=10;

4. 构造类型和指针类型的混和定义及应用 (1)指针、数组和地址间的关系 ①一维数组

int a[5]={1,2,3,4,5}; int *p=a; /* p=&a[0]; 首地址*/ a、*(p+i)、*(a+i)等价,&a、p+i、a+i等价。 ②二维数组

int a[2][2]={1,2,3,4},*p;

若p=&a[0][0]; /* p=a[0]; 第0行第0列地址*/,则 a[j]、*(a[0]+ i*2+j)、*(p+i*2+j)等价。 若p=a; /*数组首地址,第0行地址*/,则a[j]、*(a+j)、*(*(a+i)+j)、*(*(p+i)+j) 等价。

(2)指针数组

int *p[4]; /*由4个指向整型变量的指针组成的指针数组*/ int (*p)[4]; /*指向由4个元素组成的一维数组的指针变量*/ (3)结构数组 struct rectangle r[3]; (4)结构指针

struct rectangle *p; p=r; r[0].length、(*p).length、p->length等价。 (5)结构中含指针或数组

struct student {char name[10]; /* char *name */……}; (6)嵌套结构

struct student {int num; float score; struct student *next;}; (7)指向指针的指针(二级)

char *str[]={“china”,”usa”,”russia”}; char **s=str; 5. 空类型

为使程序减少出错,保证正确调用,凡不要求带回函数值的函数,一般应定义为空类型(void)。 (二)变量的存储类别、作用域和生存期 (1)存储类别

存储类别是指数据在内存中的存储方法,具体有以下四种: ①auto自动型:此类变量存放于内存的动态存储区。 ②static静态型:此类变量存放于内存的静态存储区。 ③extern外部参照型:此类变量存放于内存的静态存储区。 ④register寄存器型:此类变量存放于cpu中的寄存器。 (2) 作用域(空间角度)

①局局变量:在函数内部定义,只在本函数范围有效。

②全部变量:在函数外部定义,其有效范围从定义位置开始到源文件结束。 (3)生存期(时间角度)

① 静态存储:在程序运行期间分配固定的存储空间。 ② 动态存储:在程序运行期间根据需要动态分配存储空间。 自动局部变量:在函数内部定义,离开函数,值消失。

静态局部变量:在函数内部定义,离开函数,值仍保留,下次调用该函数可继续使用。 静态全局变量:只限于被本文件中的函数引用。 外部变量(extern):允许其它文件引用。 二. 运算及流程控制 1. 基本运算 (1)运算符的功能

c运算符范围很广,常用的有以下几类: ①算术运算符(+ - * / %):运算结果为数值。

②关系运算符(> < == >= <= !=):运算结果为1(真)或0(假)。 ③逻辑运算符(! && ||):运算结果为1(真)或0(假)。 ④赋值运算符(=):运算结果为赋值运算符右边表达式的值。

⑤条件运算符(? :):当?后表达式值非0时,运算结果为:左边表达式的值,否则为右边表达式的值。 ⑥逗号运算符(,):运算结果为最右边表达式的值。 (2)运算符的优先级、结合性和目数

①优先级(由高至低):初等运算符() [] -> ·→单目运算符→算术运算符(先乘除求余,后加减)→逻

辑运算符(不包括!)→条件运算符→赋值运算符→逗号运算符

②结合性:规定了运算的结合方向,除单目运算符、条件运算符和逗号运算符为自右向左外,其余均为自左向右

③目数:运算符所要求的运算对象的个数,条件运算符是唯一的三目运算符。 (3)隐式类型转换和强制类型转换

①隐式类型转换:系统会自动把不同类型的数据先先转换成同一类型,再进行运算,如10+?a?→10+97→107,3+6.5→3.0+6.5→9.5,又如float x; x=3+6.5→x值为9。

②强制类型转换:(类型名)表达式,如(int)6.5 % 3→6 % 3→0。 2. 表达式

(1)组成规则:按c语法规则,用运算符将运算对象(常量、变量、函数)连接起来。 (2)计算过程:先进行优先级高的运算,同一优先级的运算符的运算次序由结合性决定。 3.语句

(1) 表达式语句、空语句、复合语句

①表达式语句:在表达式最后加分号构成,函数调用语句就属于表达式语句。 ②空语句:只有一个分号的语句,什么也不做,有时做循环体。 ③复合语句:用{}括起来的一些语句。 (2) 简单控制语句

①break:提前结束整个循环或switch语句,接着执行循环或switch语句下面的语句。 ②continue:提前结束本次循环,接着进行下一次是否执行循环的判断。

③return (表达式):将表达式的值作为函数值返回。若表达式值的类型与函数类型不一致,自动转换成函数类型。 (3) 选择控制语句

①if:有单分支、双分支和多分支三种形式,注意同一程序的等价转换。 ②switch:根据表达式的具体值进行多分支选择。 (4) 重复控制语句

①for:既可处理循环次数已知的循环,也可处理循环次数未知而只给出循环条件的循环。 ②while:当型循环,先判断循环条件,再执行循环体。 ③do-while:直到型循环,先执行循环体,再判断循环条件。 三. 程序结构和函数 1.程序结构

(1)main函数与其它函数之间的关系

c程序由函数组成,一个c源程序至少包含一个main函数和若干个其它函数,每个函数实现一定的功能,从而实现程序的模块化设计。程序总是从main函数开始执行,在main函数中可以调用其它函数,其它函数间也可以相互调用。 (2)被调用函数

①标准库函数:系统将一些常用的功能模块编写成函数,放在函数库中供用户直接选用。使用时应用#include命令将相应的头文件包含到本文件中。

②自定义函数:用户为解决自己的专门需要而定义的函数。在主调函数中对被调函数进行声明,形式“函数类型 函数名(参数类型列表)”。 2.函数的定义

(1) 函数定义的ansi c格式

类型名 函数名(形式参数列表){函数体} (2) 函数的参数及参数传递

①形式参数:调用函数前不占内存单元,调用时才分配内存单元,调用结束后释放。

②实际参数:可以是常量、变量或表达式。

③指针参数:为使在被调用函数中改变的变量的值能被主调函数得到,应该用指针变量作为函数参数。 ④参数传递:是主调函数与被调用函数之间传递数据的主要途径,这种传递是“值传递”,即只能由实参传给形参,不能由形参传回给实参,因为实参与形参位于内存中不同的单元。注意实参与形参的类型应相同或赋值兼容。 (3) 函数的返回值

通过函数调用使主调函数获得一个确定的值。除了可能返回一个整型值、实型值、字符值外,也可以把指针(地址)作为函数的返回值,此时函数的定义形式为: 类型名 *函数名(参数表){函数体} 3. 函数的调用 (1)函数调用的一般格式

①通过函数名调用函数:形式“函数名(实参列表)”,位置出现在语句、表达式或实参。

②通过函数指针调用函数:定义指向函数的指针变量“类型名 (*变量名)();”,给函数指针变量赋值“函数指针变量名=函数名;”,调用“(*函数指针变量名)(实参列表)”。 (2)函数的嵌套调用和递归调用

①嵌套调用:一个函数体内不能包含另一函数的定义,即不允许嵌套定义,但允许调用另一个函数,即嵌套调用。

②递归调用:在调用一个函数的过程中直接或间接地调用该函数本身。 (3)熟练掌握标准库函数的调用

①常用数学函数:cos、sqrt、pow、exp、fabs、log、log10。 ②常用字符函数:isalnum、isalpha、isdigit、islower、toupper。 ③常用字符串函数:strcpy、strcmp、strcat、strlen。 四.数据的输入和输出 1.文件

所谓文件是指存放在外存上的数据集合,一个c文件是一个字节流(ascii文件、文本文件)或二进制流(二进制文件),而不是由记录组成的。在c语言中对文件的存取是以字符(字节)为单位。 2.标准文件的输入和输出

键盘和显示器被看作标准文件,通过键盘输入即从文件中读取数据,在显示器上显示即向文件中写数据。c语言不提供专门的输入输出语句,而是通过函数来实现输入输出操作,常用输入输出函数有:格式化输入输出函数(scanf、printf)、字符输入输出函数(getchar、putchar)、字符串输入输出函数(gets、puts)。 3.缓冲文件系统(文本文件) (1) 文件的打开和关闭

file *fp; fp=fopen(文件名,使用方式);fclose(fp); (2) 文件的基本读写操作

常用函数有:fscanf(从指定文件按格式读出数据)、fprintf(按格式向指定文件写入数据)、fgetc(从指定文件读出一个字符)、fputc(向指定文件写入一个字符)、fgets(从指定文件读出一个字符串)、fputs(向指定文件写入一个字符串)。 (3) 文件的状态检测

feof(文件指针):若文件指针指向文件末尾,函数值为真(非0)。 五.编译预处理

1.编译预处理的基本概念

预处理命令并不属于c语言本身的组成部分,这些命令在编译前处理,主要用于改进程序设计环境,提高编程效率。主要有宏定义、文件包含和条件编译三种,这些命令都以#开头。 2.宏定义

用一个指定标识符代表一个字符串,形式为:#define 标识符 字符串,常用于定义符号常量。 3.文件包含

一个源文件将另一个源文件的全部内容包含进来,形式为:#include <文件名>,常用于包含头文件。 六.面向对象程序设计初步

1. 类、对象和面向对象程序设计的基本概念

①对象:客观世界中任何一个事务都可以看作一个对象,它们之间通过一定的渠道相互联系。一个对象应该包含两个要素:数据和操作。

②类:每一个实体都是一个对象,具有相同结构和特性的对象属于同一类型,在c++中称为“类”,它代表某一批对象的共性和特征。类是对象的抽象,对象是类的具体实例。类是用来定义对象的一种抽象数据类型。

③面向对象程序设计:程序设计者的任务包括设计对象(把数据和操作代码封装在一个对象中)和协调各种对象共同完成所需任务。 2.掌握类的定义 class stud

{int num; //定义数据成员 char name[10]; char sex;

void display() //定义成员函数 {cout<<”num:”<

stud stud1,stud2; //定义对象

第二部分 c程序设计的常用算法

算法(algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法

此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。

例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。

本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x[1]中,个位是2的个数存放在x[2]中,……个位是0的个数存放在x[10]。 void main() { int a[101],x[11],i,p; for(i=0;i<=11;i++) x=0;

for(i=1;i<=100;i++) { a=rand() % 100; printf(\ if(i==0)printf(\

本文来源:https://www.bwwdw.com/article/rtlv.html

Top