文档库 最新最全的文档下载
当前位置:文档库 › 全国计算机二级考试C语言(最全复习资料)

全国计算机二级考试C语言(最全复习资料)

全国计算机二级考试C语言(最全复习资料)
全国计算机二级考试C语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。

考试其它比重:

1、C语言程序的结构占总分1%

2、数据类型及其运算占总分4%

3、选择结构程序设计占比分的3%

4、循环结构占比分的5%

5、数组的定义和引用占比分的5%

6、函数占比分的5%

7、编译预处理占比分1%

8、指针占比分的5%

9、结构体占比分的3%

10、位运算占比分的2%

11、文件操作占比分的2%

考试方式

上机考试,时长120分钟

单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题)

第一部分 C语言知识复习资料

第一章C语言基本知识(90分)

【考点1】C程序

用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数

又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。

【考点3】存储形式

计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。

【考点4】注释

是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

【考点5】书写格式

每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。

【考点6】标识符

是标识名字的有效字符序列,可以理解为C程序中的单词。

标识符的命名规则是:

(1)标识符只能由字母、数字和下划线组成,字母区分大小写。

(2)标识符的第一个字符必须是字母或下划线,不能为数字。

C语言标识符分如下3类

(1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。

(2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。

(3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。

【考点7】常量与变量

常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。

【考点8】整型数据

整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。

整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。

【考点9】实型数据

实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。

口诀:E前E后必有数,E后必须为整数。

实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。

【考点10】算术运算

算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。

【考点11】强制类型转换

将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。

【考点12】赋值

赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌握复合赋值表达式转化为赋值表达式的方法。如n+=100可转化为n=n+100。

【考点13】自加自减运算

自加运算符“++”与自减运算符“--”是单目运算符,运算对象必须是变量。自增自减运算分前缀运算和后缀运算,它们所对应的表达式的值是有区别的,如j=i++;等价于j=i;i=i+1;而j=++i;等价于i=i+1;j=i;。

口诀:加加在前先加后用,加加在后先用后加。

【考点14】逗号运算

逗号运算符运算优先级最低,可将多个表达式构成一个新的表达式。

考试真题:

1、下列叙述中错误的是( D )——2006年4月选择第44题

A)C语言源程序经编译后生成后缀为.obj的目标程序

B)C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 2、下列叙述中错误的是(B)——2006年4月选择第45题A)算法正确的程序最终一定会结束 B)算法正确的程序可以有零个输出 C)算法正确的程序可以有零个输入

D)算法正确的程序对于相同的输入一定有相同的结果 3、下列叙述中错误的是(A)——2006年9月选择第11题

A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成

D)一个C函数可以单独作为一个C程序文件存在 4、下列叙述中正确的是(D)——2006年9月选择第12题

A)每个C程序文件中都必须要有一个main()函数算法正确的程序对于相同的输入一定有相同的结果B)在C程序中main()函数的位置是固定的

C)C程序中所有函数之间都可以相互调用,与函数所处位置无关 D)在C程序的函数中不能定义另一个函数

5、在算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的(C)——2007年4月选择第11题

A)正当性

B)可行性

C)确定性

D)有穷性

6、下列叙述中错误的是(D)——2007年4月选择第12题

A)计算机不能直接执行用C语言编写的源程序

B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件

C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件

D)后缀为.obj和.exe的二进制文件都可以直接运行

7、下列叙述中错误的是(C)——2007年4月选择第14题

A)C语言是一种结构化程序设计语言

B)结构化程序由顺序、分支、循环3种基本结构组成

C)使用3种基本结构构成的程序只能解决简单问题

D)结构化程序设计提倡模块化的设计方法

8、对于一个正常运行的C程序,下列叙述中正确的是(A)—2007年4月选择第15题

A)程序的执行总是从main函数开始,在main函数结束

B)程序的执行总是从程序的第一个函数开始,在main函数结束

C)程序的执行总是从main函数开始,在程序的最后一个函数中结束

D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数结束

9、C语言源程序名的后缀是(B)——2007年9月选择第11题

A).exe B).c C).obj D).cp

10、下列叙述中正确的是(C)——2007年9月选择第14题

A)C语言程序将从源程序中第一个函数开始执行

B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main 作为主函数名,程序将从此开始执行,在此结束 D)Main可作为用户标识符,用以命名任意一个函数作为主函数

1. 以下选项中合法的标识符是(2009年3月)c

A)1_1 B)1-1 C)_11 D)1_ 2. 以下选项中不合法的标识符是c(2008年4月)

A)print B)FOR C)&a D)_00

3. 可在C程序中用做用户标识符的一组标识符是(2007年9月)

A)and B)Date C)Hi D)case _2007 y-m-d Dr.Tom Bigl

4. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(2007年4月)

A)大写字母 B)连接符 C)数字字符 D)下划线 5. 以下不合法的用户标识符是(2006年4月)A)j2_KEY B)Double C) 4d D) _8_

1. 以下选项中不属于字符常量的是(2008年4月)

A)'C' B)"C" C)'\xCC0' D)'\072' 2. 以下合法的字符常量的是

A)'\x13' B)?\081? C)'65' D)”\n”

3. 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下列不能将变量c中

的大写字母转换为对应小写字母的语句是(2007年4月) A)c=(c-…A?)%26+?a? B)c=c+32 C)c=c-…A ? +?a? D)c=(…A?+c)%26-…a? 4. 以下选项中,值为1的表达式________。(2006年9月) A)1-…0? B)1-…\0? C)?1?-0 D)?\0?-…0? 1. 以下选项中,能用作数据常量的是(2009年3月)

A)o115 B)0118 C)1.5e1.5 D) 115L 2. 以下选项中不能作为C 语言合法常量的是()。

A)'cd' B)0.1e+6 C)"\a" D)'\011' 3. 以下不合法的数值常量是

A)011 B)lel C)8.0 E0.5 D)0xabcd 4. C 源程序中不能表示的数制是()。(2008年9月)

A)二进制

B)八进制

C)十进制

D)十六进制

5. 以下关于long、int和short类型数据占用内存大小的叙述中正确的是(2007年9月)

A)均占4个字节

B)根据数据的大小来决定所占内存的字节数

C)由用户自己定义 D)由C语言编译系统决定 6. 以下选项中,合法的一组C语言数值常量是(2007年9月)

A) 028 B) 12.

C) .177

D) 0x8A

. 5e-3

0xa23

4e1.5

10,000

-0xf 4.5e0 0abc 3.e5

第二章顺序结构

【考点1】运算符、表达式、语句

运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语句。

【考点2】运算符的优先级和结合顺序

运算符按参加运算的对象数目可分为单目运算符、双目运算符和三目运算符。初等运算符的优先级别最高,然后依次是单目运算符、算术运算符、关系运算符、逻辑运算符(除逻辑非!)、条件运算符、赋值运算符、逗号运算符。位运算符优先级介于算术运算符与逻辑运算符之间。结合顺序大多为自左向右,而自右向左的有三个:单目运算符、条件运算符和赋值运算符。

【考点3】printf函数

格式为:printf(输出控制,输出列表)。输出控制是用一对双引号括起来的,包含格式说明和原样信息。输出列表包含若干输出项。

【考点4】printf函数中格式说明

%d对应整型,%f对应单精度实型,%c对应字符型,%o对应八进制无符号整型,%x对应无符号十六进制整型,%u对应无符号整型,%e对应指数型,%s对应字符串型。可在%和格式字符之间加一个数来控制数据所占的宽度和小数位数。

【考点5】scanf函数

输入项要求带取地址符&。当用键盘输入多个数据时,数据之间用分隔符。分隔符包括空格符、制表符和回车符,但不包括逗号。

【考点】6如何交换两个变量

要使用中间变量,语句为:t=x; x=y; x=t;。

第三章选择结构

【考点1】关系运算

C语言用非0表示逻辑真,用0表示逻辑假。关系运算符有6个,分别是>,>=,<,<=,==,!=,前四种优先级高于后两种。关系表达式真时为1,假时为0。注意a

逻辑运算符共有3个:逻辑与(&&),逻辑或(||),逻辑非(!)。注意短路现象,例a++||b++,如果表达式a++的值非零,则表达式b++不再执行。

【考点3】if语句

可以单独出现,也可以与else匹配出现。if语句可以嵌套,这时else总是与离它最近的且没有与else 匹配的if匹配。

【考点4】条件运算

是唯一的三目运算符,格式为:表达式1?表达式2:表达式3。表达式1值为非0时,整个表达式值为表达式2的值,表达式1值为0时,整个表达式值为表达式3的值。

口诀:真前假后

【考点5】switch语句

格式及执行过程详见教材P33,要注意每条case后有没有break语句的区别。还要注意switch后小括号里面的表达式不能为实型,case后表达式不能有变量。

口诀:switch表不为实,case表不为变。

第四章循环结构

【考点1】三种循环结构

三种循环结构分别为:while,do-while,for,三种结构的格式及执行顺序详见教材第36、39、40页。注意for循环中的小括号中必须是两个分号;循环一定要有结束条件,否则成了死循环;do-while()循环最后的while();后一定要有分号。

【考点2】break与continue

break是终止所在整个循环,而continue是提前结束本轮循环。break语句可出现在循环结构与switch 语句中,continue只出现在循环结构中。

【考点3】循环的嵌套

就是循环里面还有循环,计算要一层一层分析,一般只考查两层嵌套,循环嵌套通常是处理二维数组。【考点4】循环结构的复习

循环结构是重点,笔试所占分值一般在13分左右,在上机考试中也是必考点,应用性很强。要求学员重点理解并多加练习,领会掌握。

第五章字符型数据位运算

【考点1】字符常量

一个字符常量用一对单引号括起来,字符常量只能包括一个字符,’ab’是非法的。空格常用’□’来表示。字符常量可用对应的ASCII码表示,需记住:’0’的ASCII码为48,’A’的ASCII码为65,’a’的ASCII 码为97。

【考点2】转义字符

一对单引号中以一个反斜线后跟一个特定字符或八进制、十六进制数来构成转义字符。比如’\n’表示换行,’\101’或’\x41’表示ASCII码为65的字符’A’。

【考点3】字符型数据可以和整型数据相互转换

如:’0’-0=48 ‘A’+32=’a’char a=65;printf(“%d%c”,a,a);结果为65A

【考点4】位运算符

C语言提供6种位运算符:按位求反~,按位左移<<,按位右移>>,按位与&,按位异或|,按位或^。一般情况下需要先转化进制。异或运算的规则:0异或1得到1,0异或0得到0,1异或1得到0。可记为“相同为0,不同为1”。

【考点5】putchar与getchar函数

可用于输出或输入单个字符,这两个函数是stdio.h文件中的库函数,它们是printf与scanf函数的简化。

第六章函数

【考点1】函数的定义

函数是具有一定功能的一个程序块。函数的首部为:函数类型函数名(类型1 形参1,类型2 形参2,……)。在函数定义中不可以再定义函数,即不能嵌套定义函数。函数类型默认为int型。

【考点2】库函数

调用C语言标准库函数时要包含include命令,include命令行以#开头,后面是””或<>括起来的后缀为”.h”的头文件。以#开头的一行称为编译预处理命令行,编译预处理不是C语言语句,不加分号,不占运行时间。

【考点3】函数的返回值

函数通过return语句返回一个值,返回的值类型与函数类型一样。return语句只执行一次,执行完或函数体结束后退出函数。

【考点4】函数的声明

函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有函数名、函数返回值类型、函数参数类型,但不一定要有形参的名称。

【考点5】函数的调用

程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用函数结束,再顺序往下执行。

【考点6】函数的参数及值传递

形式参数简称形参,是定义函数时函数名后面括号中的参数。实在参数简称实参,是调用函数时函数名后面括号中的参数。实参和形参分别占据不同的存储单元。实参向形参单向传递数值。

“传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就有可能改变实参所对应的量。

【考点7】函数的递归调用

函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了。

【考点8】要求掌握的库函数

sqrt()算术平方根函数,fabs()绝对值函数,pow()幂函数,sin()正弦函数

第七章指针

【考点1】指针变量

【考点2】指针变量的定义指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。

格式为:类型名*指针变量名。二维指针int **p;可以理解为基类型为(int *)类型。

【考点3】指针变量的初始化

指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。

【考点4】指针变量的引用

&是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。

【考点5】指针的运算

*p++和(*p)++之间的差别:*p++是地址变化,(*p)++是指针变量所指的数据变化。一个指针变量加一个整数不是简单的数学相加,而是连续移动若干地址。当两个指针指向同一数组时,它们可以比较大小进行减法运算。

第八章数组

【考点1】数组的定义

数组是一组具有相同类型的数据的集合,这些数据称为数组元素。格式为:类型名数组名[常量表达式]。数组的所占字节数为元素个数与基类型所占字节数的乘积。

【考点2】数组的初始化

第一维长度可以不写,其它维必须写。int a[]={1,2};合法,int a[][3]={2,3,4};合法,int a[2][]={2,3,4};非法。数组初始化元素值默认为0,没有初始化元素值为随机。如在int a[5]={0,1,2};中,元素a[4]值为0;而在int a[5];中,元素a[4]值为一个不确定的随机数。

【考点3】元素的引用

数组元素的下标从0开始,到数组长度减1结束。所以int a[5];中数组最后一个元素是a[4]。要把数组

元素看作一个整体,可以把a[4]当作一个整型变量。

【考点4】二维数组

数组a[2][3]={1,2,3,4,5,6};中含6个元素,有2行3列。第一行为a[0]行,第2行为a[1]行,a[0]、a[1]叫行首地址,是地址常量。*(a[0]+1)是第一行第一个元素往后跳一列,即元素a[0][1]值为2,*(a[0]+3)是第一行第一个元素往后跳三个,即元素a[1][0]值为4。

【考点5】行指针

是一个指针变量,占四个字节,行指针指向一行连续数据,形式为:int (*p)[2];,p只能存放含有两个整型元素的一维数组的首地址。注意(*p)两边的小括号不能省略,否则就成了指针数组,是若干指针元素的集合。

【考点6】数组名

数组名是数组的首地址。数组名不能单独引用,不能通过一个数组名代表全部元素。数组名是地址常量,不能对数组名赋值,所以a++是错误的。但数组名可以作为地址与一个整数相加得到一个新地址。【考点7】元素形式的转换

助记:“脱衣服法则”a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可变成*(*(a+2)+3)。

第九章字符串

【考点1】字符串常量及表示

字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动在其尾部加上一个空值’\0’,空值也要占用一个字节,也就是字符串”ABC”需要占四个字节。

【考点2】字符数组

C语言没有字符串变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实际存放的最长字符串多一个元素,从而存放’\0’。

【考点3】字符串赋值

可以用下面的形式进行赋值:char str[]=”Hello!”;或char *p;p=”Hello!”;,但不能用下面的形式:char str[10];str=”Hello”;因为str是一个地址常量,不能进行赋值操作。

【考点4】字符串的输入与输出

可以用scanf和printf函数,如scanf(”%s”,str);,也可用专门处理字符串的两个函数gets和puts函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个’\0’。使用gets函数可以接收空格,使用puts函数在最后输出一个换行。

【考点5】字符串函数

要掌握的四个字符串函数:字符串拷贝函数strcpy(),求字符串长度函数strlen(),字符串链接函数strcat(),字符串比较函数strcmp()。使用这些函数需在预处理部分包含头文件”string.h”。

字符串长度要小于字符数组的长度,例:char str[10]=”Hello”;sizeof(str)的值为10(数组长度),strlen(str)的值为5(字符串长度)。这些函数是考试常用到的函数,大家一定要熟练应用这几个函数。

第十章结构体与共用体

【考点1】结构体类型的说明

结构体是若干个类型数据的集合,结构体类型说明格式如下:struct 类型名{类型1 成员名1;类型2 成员名2;……};,以上整个部分是一个数据类型,与整型的int是同样地位。可用typedef把结构体类型替换成一个只有几个字母的简短标识符。

【考点2】结构体变量的定义

结构体变量是用说明的结构体类型所定义的一个变量,与结构体类型不是一回事。一个结构体变量所占字节数为其所有成员所占字节数之和。如struct stu{char name[10];int age;} a,b;则表明定义了两个结构体变量a,b,每个变量占4个字节。a,b与int i,j;中的变量i,j是同样地位。

【考点3】结构体成员的引用

引用成员可用以下3种方式:(1结构体变量名.成员名;(2)指针变量名->成员名:(3)(*指针变量名).成员名。点(.)称为成员运算符,箭头(->)称为结构指向运)

【考点4】链表

链表是由一个个结点构成的,一个结点就是一个结构体变量。每个结点可以分为数据域与指针域两个部分,数据域用来存放要存储的数据,指针域用来指向下一个结点。链表是考试中的难点,在C语言和公共基础部分都会考到,要领悟掌握。

【考点5】共用体

共用体的使用格式与结构体相似,共用体定义的关键字为union,共用体所占字节数是所有成员中字节数最大的那个。

第十一章文件

【考点1】文件类型指针

文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。

【考点2】文本文件与二进制文件

文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就是存储’1’、’0’、’0’三个字符的ASCII码(00110001 00110000 00110000),如果是二进制形式就把100转化成二进制(01100100)。

【考点3】打开文件

文件的打开形式如下:FILE *fp; fp=fopen(“c:\\lab.c”,”rb”);。fopen函数的前面一部分为文件名,后面一部分为文件的使用方式。打开方式详见教材第127页,其中r代表读,w代表写,a代表添加,b代表二进制位的。

【考点4】文件函数

●判断文件结束feof函数,调用形式为:feof(FILE *fp); //文件指针,如果文件结束,则函数返回1,

否则返回0

●fseek用来设置文件的位置,接着的读或写操作将从此位置开始。函数的调用形式如下:

fseek(文件指针,位移量,移动起始点);

eg。FILE*fp=fopen(“C:\\xiaoyu.c”,”rb”);

fseek(fp,12,SEEK_SET); //表示将文件fp的位置移动到文件起始位置后面的第12个字节的位置上

或者fseek(fp,12,0);

fseek(fp,-12,SEEK_END; //表示将文件fp的位置移动到文件末尾位置前面的第12个字节的位置上

或者fseek(fp,12,2);

如果是

fseek(fp,12,SEEK_CUR); //表示将文件fp的位置从当前位置移动后面的第12个字节的位置上

或者fseek(fp,12,1);

●ftell用来获得文件当前的位置,函数给出当前位置相对于文件开头的字节数。函数调用形式如下:

ftell(FILE *fp) //给出当前闻之相对于开头的字节数,出错时,返回-1L

●文件位置移到开头rewind函数功能等价于fseek(fp,0,SEEK_SET)

●文件字符输入输出ch=fgetc(FILE *fp)函数用于从fp指定的文件中读入一个字符并把它作为函数值

返回

●fputc(char ch,FILE *fp),将字符ch写到文件指针fp所指的文件中去,输出成功,则返回输出的字

符,失败,则返回一个EOF值

●文件输入输出fscanf函数和fprintf函数,一般形式fscanf(文件指针,格式控制字符串,输入项表

或输入项表)

●文件字符串输入输出fgets函数(fgets(str,n,fp),功能是从fp所指文件中读入n-1个字符放入str

为起始地址的空间内)和fputs函数( fputs(str,fp) )

●读写二进制文件fread函数和fwrite函数。

以上函数要求知道格式会用,清楚是用于二进制文件还是文本文件,要把教材文件这章仔细复习下,不要在考试的时候把这些文件函数搞混了。

典型例题:

给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

void fun(char *s, int a, double f)

{

__1__ fp;

char ch;

fp = fopen("file1.txt", "w");

fprintf(fp, "%s %d %f\n", s, a, f);

fclose(fp);

fp = fopen("file1.txt", "r");

printf("\nThe result :\n\n");

ch = fgetc(fp);

while (!feof(__2__)) {

putchar(__3__); ch = fgetc(fp); }

putchar('\n');

fclose(fp);

}

main()

{ char a[10]="Hello!"; int b=12345;

double c= 98.76;

fun(a,b,c);

}

第十二章深入讨论

【考点1】编译预处理

凡以#开头的这一行,都是编译预处理命令行,编译预处理不加分号,不占运行时间。宏替换仅是简单的文本替换,如#define f(x) (x)*(x)和#define f(x) x*x替换f(2+2)时就有区别,前者展开为(2+2)*(2+2),后者为2+2*2+2。

如果源文件f2.c中有#include”f1.c”可以理解为把源文件f1.c原样包含到f2.c中,使f1.c和f2.c融合到一起成为一个C程序编译。所以一个C程序必有主函数,但一个C源文件未必有主函数。

【考点2】标识符作用域

局部变量是在函数内或复合语句内定义的变量,作用域为定义它的函数内。局部变量有三种类型:自动auto,寄存器register和静态sta tic。

自动变量随着函数的使用与否创建消失;寄存器变量分配在cpu中,没有内存地址;静态变量占用固定存储单元,在程序执行过程不释放,直到程序运行结束。

全局变量是在函数外定义的变量,作用域从定义它的位置到整个源文件结束为止,生存期为整个程序运行期间。全局变量都是静态变量。

eg

.#include

int fun()

{

static int x = 1;

x*=2;

return x;

}

main()

{

int i,s=1;

for(i=1;i<=3;i++)

s*=fun();//i=1 S=2 i=2 S=8

printf(“%d\n”,s);

} 64

【考点3】动态存储分配

malloc(size)用来创建连续size个字节存储区,返回值类型为void *型。malloc函数常用于动态创建链表结点,如int *p; p=(int *)malloc(sizeof(int));。

calloc(n,size)创建n个同一类型的存储空间,可以理解为n个malloc。

free(p)释放动态分配的存储单元。

第二部分公共基础知识资料

第一章数据结构与算法

【考点1】算法的基本概念

算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。算法不等于程序,也不等于计算方法。算法的基本特征:

确定性,算法中每一步骤都必须有明确定义,不允许有多义性;

有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;

可行性,算法原则上能够精确地执行;

拥有足够的情报。

算法的组成要素:一个算法由数据对象的运算和操作以及其控制结构这两部分组成。

算法的基本运算和操作:算术运算,逻辑运算,关系运算,数据传输。

算法的基本控制结构:顺序,选择,循环。

算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术。

【考点2】算法的复杂度

算法效率的度量——算法的复杂度:时间复杂度和空间复杂度。

算法时间复杂度:指执行算法所需要的计算工作量。通常,一个算法所用的时间包括编译时间和运行时间。算法空间复杂度:指执行这个算法所需要的内存空间。包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。

空间复杂度和时间复杂度并不相关。

【考点3】数据结构的基本概念

数据:数据是客观事物的符号表示,是能输入到计算机中并被计算程序识别和处理的符号的总称,如文档,声音,视频等。

数据元素:数据元素是数据的基本单位。

数据对象:数据对象是性质相同的数据元素的集合。

数据结构:是指由某一数据对象中所有数据成员之间的关系组成的集合。

【考点4】逻辑结构和存储结构

数据结构可分为数据的逻辑结构和存储结构。

数据的逻辑结构是对数据元素之间的逻辑关系的描述,与数据的存储无关,是面向问题的,是独立于计算机的。它包括数据对象和数据对象之间的关系。

数据的存储结构也称为数据的物理结构,是数据在计算机中的存放的方式,是面向计算机的,它包括数据元素的存储方式和关系的存储方式。

数据结构和逻辑结构的关系:一种数据的逻辑结构可以表示成多种存储结构即数据的逻辑结构和存储结构不一定一一对应。

常见的存储结构有:顺序,链接,索引等。采用不同的存储结构其数据处理的效率是不同的。

【考点5】线性结构和非线性结构

线性结构的条件(一个非空数据结构):(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。

非线性结构:不满足线性结构条件的数据结构。

栈、队列、双向链表是线性结构,树、二叉树为非线性结构。

【考点6】线性表及其顺序存储结构

线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

在复杂线性表中,由若干项数据元素组成的数据元素称为记录;由多个记录构成的线性表称为文件。

非空线性表的结构特征:

(1)有且只有一个根结点a1,它无前件;

(2)有且只有一个终端结点an ,它无后件;

(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。

结点个数n 称为线性表的长度,当n=0时,称为空表。

线性表的顺序存储结构具有以下两个基本特点:

(1)线性表中所有元素所占的存储空间是连续的;

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

元素ai 的存储地址为:ADR(ai)=ADR(a1)+(i-1)*k ,ADR(a1)为第一个元素的地址,k 代表每个元素占的字节数。 顺序表的运算:查找、插入、删除。

【考点7】线性链表 线性链表是线性表的链式存储结构,数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。结点由两部分组成:(1) 用于存储数据元素值,称为数据域;(2) 用于存放指针,称为指针域,用于指向前一个或后一个结点。 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

链式存储方式既可用于表示线性结构,也可用于表示非线性结构。

线性单链表中,HEAD 称为头指针,HEAD=NULL (或0)称为空表。

双向链表有两个指针:左指针(Llink )指向前件结点,右指针(Rlink )指向后件结点。

循环链表:循环链表与单链表的不同的是它的最后一个结点的指针域存放的事指向第一个结点的指针而单链表存放的是空指针。

线性链表的基本运算:查找、插入、删除。

【考点8】栈

1、栈的基本概念 栈是一种特殊的线性表,只允许在表的一端进行插入和删除的线性表;插入,删除的一端为栈顶,另一端为栈底;当表中没有元素时为空栈。

栈是一种后进先出(或先进后出Last In First Out )的线性表。栈具有记忆功能。栈的实例:火车调度,子弹夹。

2、栈的存储结构

顺序存储结构:用一组地址连续的存储单元即一维数组来存储;

链式存储:用线性链表来存储; 图1 单链表的结构

…… …… 图2 双链表的结构 图3 循环链表的结构

3、栈的基本运算

(1) 入栈运算,在栈顶位置插入元素;

(2) 退栈运算,删除元素(取出栈顶元素并赋给一个指定的变量);

(3) 读栈顶元素,将栈顶元素赋给一个指定的变量,此时指针无变化。

【考点9】队列

1.队列的基本概念

队列是一种特殊的线性表,只允许在表的一端插入,在另一端删除,允许插入的一端是队尾(rear),允许

删除的一端为队头(front);当表中没有元素是空队列;队列是一种先进先出的线性表。(FIFO)

2、队列的存储结构

顺序存储:一维数组。

链式存储:线性链表。队尾插;队头删

3、队列的运算:

(1) 入队运算:从队尾插入一个元素;(2) 退队运算:从队头删除一个元素。

队列的顺序存储结构一般采用循环队列的形式。循环队列s=0表示队列为空;s=1且front=rear表示队满。

计算循环队列的元素个数:“尾指针减头指针”,若为负数,再加其容量即可。

【考点10】树的基本概念

树是一种非线性结构,是n个结点的有限集。当n=0 时为空树,n>0时为非空树。结点的度:结点所拥有

的子树的个数。

叶子结点:度为0的结点。

分支结点:除叶子结点以外的结点。

结点的层次:根结点在第一层,同一层上左右结点的子结点在下一层。

树的深度:所处层次最大的那个结点的层次。

树的度:树中所有结点的度的最大值。

【考点11】二叉树及其基本性质

1、二叉树的概念

二叉树是一种特殊的树形结构,每个结点最多只有两棵子树,且有左右之分不能互换,因此,二叉树有五

种不同的形态,见教材12页。

2、二叉树的性质

性质1 在二叉树的第k层上,最多有2k-1(k≥1)个结点。

性质2 深度为m的二叉树最多有2m-1个结点。

性质3 在任意一棵二叉树中,度为0的结点(叶子结点)总是比度为2的结点多一个。

性质4 具有n个结点的二叉树,其深度不小于[log2n]+1,其中[log2n]表示为log2n的整数部分。

3、二叉树的存储结构:详见教材第13-14页。

【考点12】满二叉树与完全二叉树

满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。在满二叉树中,每一层上的结点数都达

到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。

完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点Array数均达到最大值;在最后一层上只缺少右边的若干结点。

满二叉树是完全二叉树,而完全二叉树一般不是满二叉树。

【考点13】完全二叉树的性质

性质1 具有n个结点的完全二叉树的深度为[log2n]+1。

性质2 完全二叉树中度为1的结点数为0或1。

【考点14】二叉树的遍历

前序遍历:先访问根结点、然后遍历左子树,最后遍历右子树;

并且,在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。

前序遍历图5可得:ABCDFHEG。

中序遍历:先遍历左子树、然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

中序遍历图5可得:BAFHDCGE。

后序遍历:先遍历左子树、然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

后序遍历图5可得:BHFDGECA。

【考点15】顺序查找

顺序查找是从表的一端开始,依次扫描表中的各个元素,并与所要查找的数进行比较。

在下列两种情况下也只能采用顺序查找:

(1)如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找。

(2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。

【考点16】二分查找

二分查找的条件:(1)用顺序存储结构(2)线性表是有序表。

查找的步骤:详见教材第16页。

对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次,而顺序查找需要比较n次。【考点17】排序

1、交换排序

(1)冒泡排序法,在最坏的情况下,冒泡排序需要比较次数为n(n-1)/2。

(2)快速排序法,在最坏的情况下,快速排序需要比较次数为n(n-1)/2。

2、插入类排序法:

(1)简单插入排序法,最坏情况需要n(n-1)/2次比较;

(2)希尔排序法,最坏情况需要O(n1.5)次比较。(大写O是算法复杂度的表示方法)

3、选择类排序法:

(1)简单选择排序法,最坏情况需要n(n-1)/2次比较;

(2)堆排序法,最坏情况需要O(nlog2n)次比较。

相比以上几种(除希尔排序法外),堆排序法的时间复杂度最小。

第二章程序设计基础

【考点1】程序设计方法与风格

形成良好的程序设计风格需注意:(详见教材第19页)。

1、源程序文档化;

2、数据说明的方法;

3、语句的结构;

4、输入和输出。

注释分序言性注释和功能性注释。

语句结构清晰第一、效率第二。

【考点2】结构化程序设计方法的四条原则

1、自顶向下;

2、逐步求精;

3、模块化;

4、限制使用goto语句。

【考点3】结构化程序的基本结构

顺序结构:是最基本、最普通的结构形式,按照程序中的语句行的先后顺序逐条执行。

选择结构:又称为分支结构,它包括简单选择和多分支选择结构。

循环结构:根据给定的条件,判断是否要重复执行某一相同的或类似的程序段。循环结构对应两类循环语句:先判断后执行的循环体称为当型循环结构;先执行循环体后判断的称为直到型循环结构。

【考点4】面向对象的程序设计及面向对象方法的优点

面向对象的程序设计以对象为核心,强调对象的抽象性,封装性,继承性和多态性。

面向对象方法的优点

(1)人类习惯的思维方法一致;(2)稳定性好;(3)可重用性好;

(4)易于开发大型软件产品;(5)可维护性好。

【考点5】对象及其特点

对象(object):面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。对象的基本特点:

(1)标识惟一性;(2)分类性;(3)多态性;(4)封装性;(5)模块独立性好。

【考点6】属性,类和实例

属性:即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。

类:是具有相似属性与操作的一组对象。类是关于对象性质的描述。类是对象的抽象,对象是其对应类的一个实例。

【考点7】消息及其组成

消息:是一个实例与另一个实例之间传递的信息。对象间的通信靠消息传递。它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

消息的组成包括:

(1)接收消息的对象的名称;(2)消息标识符,也称消息名;(3)零个或多个参数。

【考点8】继承和多态

继承:是使用已有的类定义作为基础建立新类的定义技术,广义指能够直接获得已有的性质和特征,而不必重复定义他们。

继承具有传递性,一个类实际上继承了它上层的全部基类的特性。

继承分单继承和多重继承。单继承指一个类只允许有一个父类,即类等级为树形结构;多重继承指一个类允许有多个父类。

多态性:是指同样的消息被不同的对象接受时可导致完全不同的行动的现象

第三章软件工程基础

【考点1】软件定义与软件特点

软件的特点:

软件是一种逻辑实体,具有抽象性;

软件的生产与硬件不同,它没有明显的制作过程;

软件在运行、使用期间不存在磨损、老化问题;

软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;

软件复杂性高,成本昂贵;

软件开发涉及诸多的社会因素。

根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)。

【考点2】软件的生命周期

软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。可分为软件定义,软件开发及软件维护3个阶段。软件生命周期中,能够准确确定软件系统必须做什么和必须具备哪些功能的阶

【考点3】软件危机和软件工程的概念

软件危机泛指在计算机软件的开发和维护过程中遇到的一系列严重的问题,集中表现在成本,质量。生产效率等几个方面。

所谓软件工程是指采用工程的概念、原理、技术和方法指导软件的开发与维护。是建立并使用完善的工程化原则,以较经济的手段获得,能在实际机器上有效运行的可靠软件的一系列方法;软件工程的主要思想强调在软件开发过程中需要应用工程化原则。软件工程的核心思想是把软件当作一个工程产品来处理。

软件工程包括3个要素:方法,工具和过程

【考点4】软件工程过程

软件工程过程是把软件转化为输出的一组彼此相关的资源活动,包含4种基本活动:

(1)P(plan)——软件规格说明;(2)D(do)——软件开发;

(3)C(check)——软件确认;(4)A(action)——软件演进。

【考点5】软件开发技术和软件工程管理

软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。

软件开发技术包括软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件开发方法包括分析方法,设计方法和程序设计方法。

软件工程管理包括软件管理学,软件工程经济学,软件心理学等。

软件管理学包括人员组织,进度安排,质量保证,配置管理,项目计划等。

软件工程经济学是研究软件开发中成本的估算,成本效益的方法和技术。

【考点6】软件工程的原则

软件工程的原则:抽象,信息隐蔽,模块化,局部化,确定性,一致性,完备性,可验证性(详细见教材第28-29页)。

【考点7】需求分析概述

需求分析阶段的工作:需求获取,需求分析,编写需求规格说明书,需求评审。

需求分析方法有:

(1)结构化需求分析方法;

①面向数据结构的Jackson方法(ISD);

②面向数据流的结构化分析方法(SA);

③面向数据结构的结构化数据系统开发方法(DSSD);

(2)面向对象的分析的方法(OOA)。

从需求分析建立的模型的特性来分:静态分析和动态分析。

【考点8】结构化方法和结构化分析方法

1、结构化方法包括结构化分析方法,结构化设计方法,结构化编程方法。

结构化方法中,软件功能分解属于总体设计阶段。

2、结构化分析方法的概念

结构化分析方法是面向数据流自顶而下逐步求精进行需求分析的方法。

结构化分析方法在软件需求分析阶段的应用。

3、结构化分析的常用工具

数据流图(DFD-Data Flow Diagram):是结构化分析方法中用于系统逻辑模型的一种工具。它以图形的方式描绘在系统中流动和处理的过程。

数据流图中四种基本的符号。

箭头:表示数据流,数据流是数据在系统中传播的路径。

圆或椭圆:表示加工,加工又称为数据处理,是对数据流进行某些操作或变换。

双横:表示数据存储(数据源)。数据存储又称为文件,指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。

方框:源、潭。表示数据的源点或终点。它是软件系统外部环境中的实体,统称外部实体

数据字典(DD):它是结构分析方法的核心,是用来描述系统中所用到的全部数据和文件的文档,作用是对DFD中出现的被命名的图形元素进行确切解释。

数据字典由以下4类元素组成

(1)数据流(2)数据流分量(3)数据存储(4)处理

判定树(决策树):是一种描述加工的图形工具,适合描述时候处理中具有多个判断,而且每个决策与若干条件有关。

判定表:与判定树类似,也是一种描述加工的图形工具。如果一个加工逻辑有多个条件、多个操作,并且在不同的条件组合下执行不同的操作,那么可以使用判定表来描述。

【考点9】软件需求规格说明书

软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段得出的最主要的文档。软件需求规格说明书的特点:有正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性。其中最重要的是无歧义性。

【考点10】软件设计的基本概念

软件设计是确定系统的物理模型。

软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。

从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。

(1)结构设计定义软件系统各主要部件之间的关系;

(2)数据设计将分析时创建的模型转化为数据结构的定义;

(3)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;

(4)过程设计则是把系统结构部件转换为软件的过程性描述。

从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。

(1)概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;

(2)详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。

【考点11】软件设计的基本原理

1、软件设计中应该遵循的基本原理和与软件设计有关的概念:

模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能。

抽象化:抽出事物的本质特性而暂时不考虑它们的细节。

信息隐藏和局部化:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的,实现信息隐蔽依靠对象的封装。

模块独立性:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接

口简单。模块的独立程度是评价设计好坏的重要度量标准。

【考点12】耦合性和内聚性

衡量软件的模块独立性是用耦合性和内聚性两个定性的度量标准。

耦合性:是对一个软件结构内不同模块之间互联程度的度量。耦合性的强弱取决于模块间接口的复杂程度。内聚性:是一个模块内部各个元素间彼此结合的紧密程度的度量。

一个模块的内聚性越强则该模块的模块独立性越强。一个模块与其他模块的耦合性越强则该模块的模块独立性越弱。

在结构程序设计中,模块划分的原则是模块内具有高内聚度,模块间具有低耦合度。

耦合和内聚的种类(详见教材第35页)。

耦合度由低到高:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。

内聚性由强到弱:功能内聚,顺序内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚。

【考点13】结构化设计方法

结构化分析方法是面向数据流自顶而下,逐步求精进行需求分析的方法,基本思想将软件设计成由相对独立,单一功能的模块组成的结构,与结构分析方法衔接使用,以数据流图为基础得到软件的模块结构,适用于变换型结构和事物型结构的目标系统。

1、概要设计的任务:(1)划分出组成系统的物理元素(2)设计软件的结构

2、概要设计的工具:

结构图(SC-Structure Chart)也称程序结构图,在结构图中,模块用一个矩形表示,箭头表示模块间的调用关系。可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据。

结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。

结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。

程序结构图中的专业术语:

3、面向数据流的设计方法

任何软件系统都可以用数据流图表示,典型的数据流类型有两种:变换型和事务型。

变换型系统结构图由输入、中心变换、输出三部分组成。

4、设计的准则

(1)提高模块独立性。

(2)模块规模适中。

(3)深度,宽度,扇出和扇入适当。如果深度过大,则说明有的控制模块可能简单了,如果宽度过大,则说明系统的控制过于集中,扇出过大说明模块过分复杂,需要控制和协调过多的下级模块,应适当加中间层次,扇出过小可以把模块进一步分解成若干小模块,或合并到上级模块中,扇入越大则共享该模块的上级数目越多。好的软件设计结构通常顶层高扇出,中间扇出较少,底层高扇入。

(4)使模块的作用域在该模块的控制域内。

(5)减少模块的接口和界面的复杂性。

(6)设计成单入口,单出口的模块。

(7)设计功能可预测的模块。

详细设计常用的设计工具(工程设计工具):图形工具,表格工具和语言工具。

图形工具:

程序流程图:箭头表示控制流,方框表示加工步骤,菱形表示逻辑条件。

N-S图:有五种基本图形。

PAD图:问题分析图,有五种基本图型。

表格工具:判定表。

语言工具:PDL——过程设计语言(结构化的英语和伪码)。

【考点14】软件测试的目标和准则

软件测试的目标:发现程序中的错误。

软件测试的准则:

(1)所有测试都是应追溯到需求。

(2)严格执行测试计划,排除测试的随意性。

(3)充分注意测试中的群集表现。程序中存在错误的概率与该程序中已发现的错误数成正比。

(4)程序员应避免检查自己的程序。

(5)穷举测试不可能。穷举测试是把程序所有可能的执行路径都进行检查,即使小规模的程序的执行路径数也相当大,不可能穷尽,说明测试只能证明程序有错,不能证明程序中无错。

(6)妥善保存测试计划,测试用例出错统计和最终分析报告。

【考点15】软件测试方法

从是否需要执行被测软件的角度分为静态测试和动态测试;按功能分为白盒测试和黑盒测试

1、静态测试和动态测试

静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。

动态测试是通过运行软件来检验软件中的动态行为和运行结果的正确性。动态测试的关键是使用设计高效、合理的测试用例。测试用例就是为测试设计的数据,由测试输入数据(输入值集)和预期的输出结果(输出值集)两部份组成。测试用例的设计方法一般分为两类:黑盒测试方法和白盒测试方法。

2、白盒测试和黑盒测试

(1)白盒测试

白盒测试也称为结构测试或逻辑测试,是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。

白盒测试的基本原则:

(1)保证所测模块中每一独立路径至少执行一次。

(2)保证所测模块所有判断的每一分支至少执行一次。

(3)保证所测模块每一循环都在边界条件和一般条件下至少各执行一次。

(4)验证所有内部数据结构的有效性。

(5)按照白盒测试的基本原则,“白盒”法是穷举路径测试。

白盒测试的方法:逻辑覆盖,基本路经测试。

(2)黑盒测试

黑盒测试也称功能测试或数据驱动测试,是把程序看成一只黑盒子,测试者完全不了解,或不考虑程序的结构和处理过程。它根据规格说明书的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。黑盒测试的方法:等价划分法,边界值分析法,错误推测法。

【考点16】软件测试的实施

软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。

单元测试是对软件设计的最小单位——模块进行正确性检验的测试,单元测试的根据是源程序和详细设计说明书,单元测试的技术可以采用静态分析和动态测试。

2017全国计算机等级考试二级C语言知识点超全整(打印版).docx

全国计算机等级考试

目录 第-部分公共基础知识 第1章算法与数据结构 (1) 考点1算法........................... I 考点2数据结构.. (1) 考点3线性表及英顺序存储结构 (1) 考点4栈和队列 (1) 考点5线性链表 (2) 考点6树与二叉树 (2) 考点7查找技术 (3) 考点8排序技术 (3) 第2章程序设计基础 (4) 考点I程序设计方法与风格 (4) 考点2结构化程序设计 (5) 考点3面向对象的程序设计 (5) 第3章软件工程基础 (5) 考点1软件工程基本概念 (5) 考点2软件分析方法 (6) 考点3结构化设计方法 (7) 考点4软件测试 (8) 考点5程用的调试 (9) 笫4帝数据库设计基础 (9) 考点1数据库系统的基本概念 (9) 考点2数据带系统的基木概念 (10) 考点3关系代数 (12) 考点4数据库设计与管理 (12) 第二部分二级C语言 笫1章程序设汁基本概念 (14) 考点1程序设计 (14) 考点2 C程序的结构和格式 (14) 考点3常鱼和变蛍 (14) 考点4算术表达式 (15) 考点5赋值表达式 (16) 考点6自加.口减和逗号运算 (16) 第2章顺疗结构 (17) 考点1字符型常屋与变虽 (17) 考点 2 putchar 与gclchar 函数 (17) 考点3 printf函数 (17) 考点4 scanf函数 (18) 考点5位运算的含义和应用 (18) 第3章选择结构 (19) 考点1关系运算符和关系表达式 (19) 考点2逻轉运算符和逻辑表达式 (19) 考点3 if语句及其构成的选择结构 (19) 考点4 switch语句与break语句 (20) 第4章循环结构 (20) 考点1 while循环结构 (20) 考点2 do-while循环结构 (21) 考点3 for循环结构 (21) 考点4嵌套循环语句 (21) 第5章函数 (21) 考点I库函数 (21) 考点2函数的调用 (22) 考点3参数传递 (22) 考点4函数的递归调用 (23) 考点5局部、全局变量和存储分类 (23) 第6章地址与指针 (23) 考点1变量的地址和指针 (23) 考点2抬针变量的操作 (24) 考点3函数之间地址的传递 (24) 第7章数组 (24) 考点1 一维数组的定义及元素的引用??24 考点2函数对-维数组及元素的引用??25 考点3二维数组的定义 (25) 考点4二维数组和指针 (25) 考点5二维数组名和指针数组作为实参???26 第8章字符串 (26) 考点|用-?维字符数组存放字符出? (26) 考点2使指针指向字符串 (26) 考点3字符串的输入和输出 (26) 考点4字符串数组 (27) 考点5用于字符串处理的函数 (27) 第9章编译预处理和动态存储分配 (27) 考点I編译预处理 (27) 考点2宏替换 (27) 考点3文件包含处理 (28) 考点4动态存储分配 (28) 第10章结构体.共用体和用戸定义类型28考点1结构体 (28) 考点2共用体 (29) 考点3用户定义类型 (29) 第11章文件 (29) 考点1文件指针 (29) 考点2文件的读写 (30)

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

国家二级C语言公共基础知识要点及历年真题

1算法 1.1 算法的基本概念 1.算法的概念(必记): 算法是指解题方案的准确而完整的描述。 分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导方 案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想)。 结论:算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 2.算法的基本特征(必记): a.可行性:由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算法时,要考虑到设计的算法是否是可性的。 b.确定性:算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 c.有穷性:算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 d.拥有足够的情报:算法有相应的初始数据。 3.算法的基本要素: 一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。 基本运算和操作分为四类: a. 算术运算: (加、减、乘、除等运算) b. 逻辑运算: (与、或、非等运算) c. 关系运算: (大于、小于、等于、不等于等运算) d. 数据传输: (赋值、输入、输出等操作) 算法的控制结构: 算法中各操作之间的执行顺序称之为算法的控制结构。一个算法一般都可以用顺序、选择、循环三种基本控 制结构组合而成。 注意:一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。 4.算法设计基本方法: 列举法、归纳法、递推、递归、减半递推技术、回溯法。 1.2 算法的复杂度 (必记) 算法的复杂度主要包括时间复杂度和空间复杂度。 1.算法的时间复杂度: 是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。 可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平 均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。 2.算法的空间复杂度: 一个算法的空间复杂度,是指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空间 +输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。 历届的考题: 1、算法具有五个特性,以下选项中不属于算法特性的是(______) [2005.4] A)有穷性B)简洁性C)可行性D)确定性 2、问题处理方案的正确而完整的描述称为______。[2005.4] 3、下列叙述中正确的是________。[2006.9] A)一个算法的空间复杂度大,则其时间复杂度也必定大

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

2019年全国计算机二级C语言知识点复习:指针

2019年全国计算机二级C语言知识点复习:指针 【考点1】指针变量 指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。 【考点2】指针变量的定义 格式为:类型名 *指针变量名。二维指针int **p;能够理解为基类型为(int *)类型。 【考点3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。 指针变量两种初始化 方法一:int a=2,*p=&a;(定义的同时初始化) 方法二:int a=2,*p; (定义之后初始化) p=&a; 【考点4】指针变量的引用 &是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。 【考点5】指针的运算 int *p 中 *p 和p 的差别: *p 能够当做变量来用;*的作用是取后面地址p 里面的数值

p 是当作地址来使用。 *p++ 和(*p)++的之间的差别:改错题目中很重要 *p++是地址会变化。 (*p)++ 是数值会要变化。 三名主义:(考试的重点) 数组名:表示第一个元素的地址。数组名不能够自加,他是地址常量名。(考了很多次) 函数名:表示该函数的入口地址。 字符串常量名:表示第一个字符的地址。 考试重要的话语: 指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p 的地方都能够用它等价的代替指向的变量。 例如:int a=2,*p=&a; *p=*p+2; (因为*p 指向变量a,所以指向哪个就等价哪个,这里*p 等价于a,能够相当于是a=a+2)

C语言基础必须掌握的 知识点

C语言基础必须掌握的知识点 C程序的结构和格式。 1.main函数 任何一个有效的程序都有且只能有一个main()函数,它的地位相当于程序的主体,就像大树的树干,而其他函数都是为main()服务的,就像大树树干分出的枝干。 main函数具有以下3个特点: ① C语言规定必须用main作为主函数名。其后的一对圆括号中间可以是空的,但不能省略。 ②程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。 ③一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。 2.程序中的注释 在一个C程序中放在符号“/*”和“*/”之间的内容,称为对程序的注释。注释是对程序的说明。编写注释时应遵循以下4条规则: ①符号“/*”和“*/”必须成对出现,“/”和“*”两者之间不可以有空格。 ②注释可以用英文、中文,可以出现在程序中任意合适的地方。 ③在注释之间不可以再嵌套“/*”和“*/”。例如,/*/*…*/*/形式是非法的。 ④注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。换句话说,注释只是为了更好地看懂程序而做的标记,不对程序产生任何影响。 3.源程序的书写格式 C程序书写格式的基本习惯有: ①一行内可以写几个语句,一个语句可以分写在多行上。 ②每个语句和数据定义的最后必须由一个分号“;”结束(分号是C语句的一部分,不是语句之间的分隔符)。 4.C语言的风格 C语言的风格主要有以下几个方面: ●C语言简洁、紧凑,使用方便、灵活; ●运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算; ●数据结构丰富,具有现代化语言的各种数据结构; ●用函数作为程序模块以实现C程序的模块化; ●C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作; ●生成目标代码质量高,程序执行效率高; ●用C语言写的程序可移植性好(与汇编语言比)。 5.标识符 所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。 C语言合法标识符的命名规则是: ①标识符由字母、数字和下划线组成; ②第一个字符必须为字母或下划线;

计算机二级C语言考点解析:初步知识

计算机二级C语言考点解析:初步知识 2.1程序的构成 尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示: 编译预处理 主函数() 函数() 函数() 从上面中可以看出,一个C源程序实际上就是若干函数的集合,这些函数中有一个是程序的主函数,任何C的源程序执行时,都是从主函数开始执行的,其它的函数最终必将被这个主函数所调用。C语言除了主函数规定必须取名main外,其它的函数名可以任取,但是要符合C的标识符取名规则,另外注意不要与保留字重名,最好也不可与C语言中的库函数或其它一些命令如编译预处另命令重名。各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的、独立的。不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。一个完整的一般意义上的函数有一个固定的框架,编写具体的函数时,只需在这个框架中填入相应的内容即可。框架如下: 函数类型函数名(形参) 形参说明 { 内部变量说明; 执行语句部分; } 2.2C语言的基本词法 C语言的基本词法由三部分组成:符号集、关键字、保留字。 符号集就是一门语言中允许出现的字符的集合,C语言的符号集就是ASCⅡ码表中的一些字符,在键盘上不能直接得到(比如说响铃字符),C语言引入了转义字符的概念,利用反斜杠符号″\″后加上字母的一个字符组合来表示这些字符,当在源程序中遇到这类字符组合

时,虽然这个字符组合是一个字符串的形式,但C语言仍会自动将之理解成某一特定的字符。比如″\″,C语言在处理这个字符组合时,会自动理解成回车换行符号。转义字符经过进一步引申应用,形成了另外两种形式:″\ddd″和″\xnn″,这里″\″后的ddd和xnn分别代表三位八进制和两位十六进制数(打头的″x″只是标明后面跟着的是十六进制数),这两种形式不再局限于表示不可打印的字符,它们可以表示ASCⅡ码表中的任意字符,只要把所需表示的字符的ASCII码转换成八进制数或十六进制数即可。比如说字母″A″,ASCII码为65,65的八进制和十六进制分别为101和x41,所以,字母A可表示为″\101″或″\x41″,对转义字符应认真理解。 标识符就是用以标识的符号。正如现实生活中给每一个人都取一个名字一样,C语言中的每一个对象(如函数、变量等)都必须取一个标识符以和其它对象区别开。在C语言中,这个标识符是一个字符串,这个字符串的选定有一定的规则:必须是以字母或下划线开头的字母与数字的序列。除了这个基本的规则外,C语言对标识符的命名还有几个限制需加以注意:①长度最好不要超过八个字符。因C中对标识符只处理前8个字符,超过8个长度的部分将被C自动忽略掉。″ABCDEFGH1″和″ABCDEFH2″是同一个标识符;②标识符不要与保留字同名,最好也不要与C提供的标准标识符,如库函数重名;③应注意C语言对大小写字母是敏感的,Abcd和abcd是两个不同的标识符。 关键字实际上就是一些特殊的标识符,又称保留字,这些保留字不允许用户对它重新定义。 2.3头文件、数据说明、函数的开始和结束标志 1.头文件:也称为包含文件或标题文件,一般放在一个C语言程序的开头,用#include″文件名″的格式,其中文件名是头文件名,一般用.h作为扩展名。 2.数据说明:C语言中的数据分常量和变量两种。 3.常量:有数值常量和符号常量两种。 4.数值常量:可以分为整型常量、实型常量、浮点型常量和字符常量。 5.符号常量:用一个标识符代表的一个常量,又称标识符形式的常量。 6.变量:其值可以改变的量,变量名习惯上用小写字母表示。 7.标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 8.标识符的命名规则:C语言中标识符只能由字母、数字下划线三种字符组成,且第一个字符必须为字母或下划线。C语言是大小写敏感语言,即对大小写字母认为是不同的字符。C语言中标识符的长度随系统不同而字,如TURBOC中取前8个字符,8个字符后面的字符会自动取消。

计算机等级考试必备C语言最重要的知识点

计算机等级考试必备C语言最重要的知识点

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是她的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不能够再定义函数。 5、算法:能够没有输入,可是一定要有输出。

6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行能够写多个语句,能够写多行。 3、一个C语言程序有且只有一个main 函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---.obj---.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才能够运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

计算机等级考试二级C语言高频考点(C语言部分)

计算机等级考试二级C语言高频考点(C 语言部分) 第一章 C语言基本知识 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。 【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include 等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据

计算机二级考试C语言知识点总结

计算机二级考试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)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方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)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

2019年全国计算机二级C语言考试必背知识点总结(4)

1)指针变量的本质是用来放地址,而一般的变量是放数值的。 2)int *p 中 *p和p的差别: *p可以当做变量来用;*的作用是取后面地址p里面的数值 p是当作地址来使用。 3)*p++ 和 (*p)++的之间的差别:改错题目中很重要 *p++是地址会变化。 (*p)++ 是数值会要变化。 4)三名主义:(考试的重点) 5)数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次) 6)函数名:表示该函数的入口地址。 7)字符串常量名:表示第一个字符的地址。 对a[10]这个数组的讨论。 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。 对a[3][3]的讨论2016计算机二级考试C语言知识点总结计算机考试。 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 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。 一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。 数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写 int a[]={1,2} 合法 WiseMedia int a[][4]={2,3,4}合法。但int a[4][]={2,3,4}非法。 二维数组中的行指针 int a[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语言知识点(字符串)

计算机二级C语言知识点(字符串) 计算机二级C语言知识点(字符串) 字符串与字符数组 1.字符数组的定义 定义方法与前面介绍的类似,只是将数组定义为字符型即可。例如: charc[10]; 这里定义了一个包含10个元素的字符数组c。 2.字符数组的初始化 对字符数组初始化,可以采用以下方法: (1)逐个字符赋给数组中各元素; (2)用字符串常量使字符数组初始化。 3.字符串 在C语言中,字符串是作为字符数组来处理的,字符串可以存放在字符型一维数组中,故可以把字符型一维数组作为字符串变量。 字符串常量是用双引号括起来的一串字符。 C语言中约定用′\0′作为字符串的结束标志,它占内存空间,但不计入串的长度,′\0′的代码值为0。 系统对字符串常量也自动加一个′\0′作为结束符。例如″clanguage″共有10个字符,但在内存中占11个字节,最后一个字节存放′\0′。 4.字符数组的输入输出 (1)逐个字符输入和输出

①在标准输入输出printf和scanf中使用%c格式描述符; ②使用getchar和putchar函数。例如: for(i=0;i10;i++) scanf(″%c″,str[i]);/*或str[i]=getchar();*/ str[i]=′\0′;/*人为加上串结束标志*/ for(i=0;i10;i++) printf(″%c″,str[i]);/*或putchar(str[i]);*/ (2)字符串整体输入输出 ①在标准输入输出函数printf和scanf中使用%s格式描述符; 输入形式: charstr[6]; scanf(″%s″,str); 其中str为字符数组名,代表着str字符数组的起始地址,输入时系统自动在每个字符串后加入结束符′\0′。若同时输入多个字符串,则以空格或回车符分隔。 输入形式: printf(″%s″,str); 输字符串时,遇第一个′\0′即结束。但可人为控制输出串所占的域宽如: printf(″%6s″,str);/*若字符串中字符多于6个,仍将全部输出*/ printf(″%-6s″,str);/*只输出前6个字符,多余的不输出*/ ②使用gets和puts函数输入输出一行

2019年计算机二级考试C语言知识点:选择结构

2019年计算机二级考试C语言知识点:选择结构 选择结构 特别要注意:c 语言中是用非0 表示逻辑真的,用0 表示逻辑 假的。 【考点1】关系运算 关系运算符有6个,分别是>,>=,8 这个是真的,所以表达式 的数值就是1。 【考点2】逻辑运算 只能为1(表示为真),或0(表示假) a) 共有三种逻辑运算符号。逻辑非(!),辑与(&&),逻辑或(||)。 b) !>&&>|| 优先的级别。 c) 注意短路现象。考试比较喜欢考到。 例a++||b++,如果表达式a++的值非零,则表达式b++不再执行。 d) 要表示 x 是比0 大,比10 小的方法。0 【考点3】if语句 能够单独出现,也能够与else匹配出现。if语句能够嵌套,这 时else总是与离它最近的且没有与else匹配的if匹配。 注意if语句的子句是紧接if或else的一句,如有多句需要用{}括起来。 【考点4】条件运算 是的三目运算符,格式:表达式1 ?表达式2 :表达式3

表达式1值为非0时,整个表达式值为表达式2的值,表达式1 值为0时,整个表达式值为表达式3的值。考试口诀:真前假后。 【考点5】switch语句 a) 一定要注意有 break 和没有break 的差别,书上(53,54 页)的两个例子,没有break 时候,只要有一个case 匹配了,剩下的都要执行,有break 则 是直接跳出了switch 语句。 b) switch 只能够和break 一起用,不能够和continue一起用。 c) switch(x) x:是整型常量,字符型常量,枚举型数据。 {case 1:…. 不能够是变量。 case 2:…. } switch后小括号里面的表达式不能为实型,case后表达式不能 有变量。 口诀:switch表不为实,case表不为变。

计算机二级C语言程序设计重要知识点

本次串讲的要讲解的重要知识点 1、高级语言与C语言的特点 2、C语言的基本字符集、转义字符、保留字及其含义和C语言标识符的构成规则。 3、C程序的基本结构与书写C程序的基本规则 4、C语言中数据类型的分类 5、整型、实型、字符型、字符串常量的书写方法 6、符号常量的应用和宏定义命令的使用 7、整型、实型、字符型变量的定义、初始化方法 8、基本类型数据在内存中的存放方式 9、基本运算符的运算规则、优先级别和结合性 10、掌握算术表达、关系和逻辑表达式、赋值表达式、逗号和条件表达式的构成和运算规则 11、变量赋值及表达式计算时的数据类型转换规则 12、字符输入/输出函数和格式输入/输出函数的使用 13、三条选择语句和三种选择结构的程序设计 13、三条选择语句和三种选择结构的程序设计 14、三条循环语句和三种循环结构的程序设计 15、一维数组的定义、初始化和数组元素的引用方法 16、二维数组的定义、初始化和数组元素的引用方法 17、字符数组的定义、初始化和数组元素的引用方法 18、字符数组中存放的字符串的输入/输出和处理方法 19、字符串处理的常用系统函数及其使用 20、指针变量的定义、初始化、赋值和一般使用形式 21、指向变量的指针变量、指向一维数组元素的指针变量、指向字符串的指针变量的使用方法。 22、指针数组的定义、初始化和引用 23、函数的结构与定义方法,握函数的一般调用方法 24、函数调用时参数的值传递方法、地址传递方法、返回值传递方法和利用全局外部变量在函数间传递数据的方法。 25、变量的存储类型及其定义方法、变量的生存期和作用域 26、函数嵌套调用和递归函数的特点和设计方法 27、指针型函数的定义方法和调用方法 28、常用系统函数的使用 29、结构型数据的特点和应用及结构型的定义方法 30、结构型变量的定义、初始化和成员引用方法 31、结构型数组的定义、初始化和引用结构型数组元素的成员的方法。 32、结构型指针变量的定义、初始化和利用结构型指针变量引用结构型数据的成员的方法 33、用户自定义类型的定义和使用 34、文件名的组成规则、文件的分类及其特点 36、文件型指针的定义方法 37、缓冲文件系统中各类系统函数的使用 (1)打开/关闭文件函数的使用方法。 (2)文件尾测试函数的使用方法。

2020全国计算机等级考试二级C语言知识点全套复习提纲(精华版)

全国计算机等级考试二级C语言全套复习提纲(精华 版)

目录 第一部分公共 基础知识 第1 章算法与数据结构 (1) 考点1 算法 (1) 考点2 数据结构 (1) 考点3 线性表及其顺序存储结构 (1) 考点4 栈和队列 (1) 考点5 线性链表 (2) 考点6 树与二叉树 (2) 考点7 查找技术 (3) 考点8 排序技术 (3) 第2 章程序设计基础.4 考点1 程序设计方法 与风格 (4) 考点2 结构化程序设计 (5) 考点3 面向对象的程序设计 (5) 第3 章 . 软件工程基础 5 考点1 软件工程基本概念 (5) 考点2 软件分析方法6 考点3 结构化设计方法 (7) 考点4 软件测试 (8) 考点5 程序的调试 (9) 第4 章数据库设计基础

(9) 考点1 数据库系统的基本概念 (9) 考点2 数据库系统的基本概念 (10) 考点3 关系代数 (12) 考点4 数据库设计与管理 (12) 第二部分二级 C 语言 第1 章程序设计基本概念 (14) 考点1 程序设计 (14) 考点2 C 程序的结构和格式 (14) 考点3 常量和变量.14 考点4 算术表达式.15 考点5 赋值表达式 .16 考点6 自加、自减和逗号运算 (16) 第2 章顺序结构 (17) 考点1 字符型常量与变量 (17) 考点2 putchar 与getchar 函数 (17) 考点3 printf 函数 (17) 考点4 scanf 函数 (18) 考点5 位运算的含义和应用 (18) 第3 章选择结构 (19) 考点1 关系运算符和关系表达式 (19) 考点2 逻辑运算符和逻辑表达式 (19)

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte是指字节, 一个字节 = 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识

1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。

全国计算机二级考试C语言易错知识点汇总

计算二级C语言易错知识点 1.指针是用来存放地址的变量,用(类型名 *指针变量名)的形式定义。赋值时 应将某个变量地址即&x 赋给指针变量 2. 设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp) 的返回值为 A) 0 B) '\0' C) 非0值 D) NULL 【解析】本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项C正确。 3. 有以下程序 #include main() { int a=5,b=1,t; t=(a<<2)|b; printf("%d\n",t); } 程序运行后的输出结果是 A) 1 B) 11 C) 6 D) 21 【解析】本题考查位运算,以及按位或操作,将a左移一位相当于是将a乘以了4,所以a<<2等于20,二进制表示为00010100,与b按位或得到00010101,即21,所以选项D正确。 4. 有以下程序 #include

#define N 5 #define M N+1 #define f(x) (x*M) main() { int i1,i2; i1=f(2) ; i2=f(1+1) ; printf("%d %d\n",i1,i2); } 程序的运行结果是 A) 12 7 B) 12 12 C) 11 11 D) 11 7 【解析】本题考查宏定义的用法,宏定义只是做个简单的替换,所以本题中执行f(2)=(2*N+1)=11,执行f(1+1)=(1+1*N+1)=7。选项D正确。 5. 有以下程序 #include #include struct A { int a; char b[10]; double c; }; void f(struct A t); main() { struct A a={1001,"ZhangDa",1098.0}; f(a); printf("%d,%s,%6.1f\n", a.a,a.b,a.c); } void f(struct A t) { t.a=1002; strcpy(t.b,"ChangRong"); t.c=1202.0;

c语言知识点总结

二级C语言基础知识点总结 第一章 1,函数是从主函数(main())开始执行,回到主函数(main())结束; 2,一个程序的编译是从第一个函数(语句)开始,到最后一个函数(语句)结束; 第二章 1,算法的特性:有穷性,确定性,有一个或者0个输入,有一个或者多个输出;有效性2,算法(程序)的几个结构:选择结构,顺序结构,循环结构 第三章 1,int类型是2个字节,float是4个字节,dooble是8个字节 2,数据类型分为:基本类型(整型,实型,字符型,枚举型),指针类型,构造类型(结构体类型,数组类型,共用体类型),空类型(空类型合法哦,不要忘记了这个特殊哦)3,变量的地址是确定的,变量变的地方只是地址里面的值。 4,用户标志符,由数字,字母,下划线构成,第一个不能是数字,但是32个关键字除外。5,注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768 6,长整形(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整形的3,如果是a=3L,那么就是长整形的3;当分别以%o,%ld,%x (8进制,长整形,16进制)输出的时候,结果没有前面的0,0X,和后面的L 例:int a=075,b=ox14;long int c=5L; printf(“%o,%x,%ld”,a b c); 结果为(75,14,5) 7,当出现’\0’的什么时候为结束,什么时候为八进制的转义字符:当’\0’后面有1-7之间的数字的时候为转义字符;其他的时候为字符串结束标志,注意转义字符有哪些(参考书p8) 这样一个例题若strlen(”abc\089”)=3 strlen(“abc\012”)=4 8,强制转换不会改变一个变量的值,只是改变其作用的那个表达式的值。 9,++,――,当++,——,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,――,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,――结合性是右结合,若i+++j等价于(i++)+j; 10,复合运算符要注意当等号后面接的是表达式的时候要把表达式看成一个整体即x *=y+8等价于x=x*(y+8),y+8是一个整体 第四章 1,格式输入和输出的时候,注意格式。要严格按照题目的格式进行操作。(在做题的时候尤其是读程序写结果的时候要细心哈!) 2,%d,%md,%m..nd, %e,以及相应的几种格式是什么意思,参考书p13 第五章 1,关系运算符,>,<,<=,>=,= =,!= ,==和!=优先级最低,主意=与==的区别:=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1. 2,逻辑运算符,&& ,||,!在这几个中优先级!> && > ||,优先级是体现在结合性上而不是运算的先后性上。例如 a=b=c=1;d=++a||++b&&++c在这个里面&&最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1

相关文档
相关文档 最新文档