当前位置:文档之家› 全国计算机等级考试二级C语言考点(完整版)

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

全国计算机等级考试二级C语言考点(完整版)
全国计算机等级考试二级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)不以分号结尾

7、程序中以/*开头并且以*/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。

考点2. C程序的生成过程

C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件,如图所示。

编译过程

源程序的扩展名为.c ,目标程序的扩展名为.obj , 可执行程序的扩展名为.exe 。

考点3. 标识符

在编写程序时,必须为函数、变量等命名,这个名字称为标识符。C语言中标识符的命名规则如下:

1、标识符只能由字母、数字、下划线组成;

2、标识符的第一个字母必须是字母和下划线;

3、标识符区分大小写字母,如If和if是两个完全不同的标识符。

合法标识符如下:

A6, b_3 , _mn

非法的标识符如下:

ab#12 , 8m , tr3:4 , yes no

标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名、C语言库函数相同,在程序中各种标识符尽量不要重复,以便区分。选择变量名和其他标识符时,应注意做到“见名知义”。

标识符分为如下三类:

1、关键字

关键字是具有特定含义的,专门用来说明c语言特定成分的一类标识符,不能用作用户的标识符。

2、预定义标识符

预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类:

(1)、库函数名字,比如(printf,scanf,sin,isdigit等)

(2)、编译处理命令名,比如(define,include)

3、用户标识符

用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。

考点4. 常量

在程序运行中,其值不能被改变的量称为常量。常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。

4.1 数值转换

数字的四种表现形式:

l 二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2.。

例:110101

l 八进制:以数字0(注意不是以字母O,o)开头,所有数字由0~7构成,逢八进一,八进制数中不会出现8。

例:0112,0123,077等

l 十进制:所有数字由0~9构成,逢十进一,十进制数中不会出现10。

例:0,12,-15等

l 十六进制:以0x或者0X(数字0加字母x)开头,所有数字由0~9,A~F(或者a~f)构成,逢十六进一(其中A、B、C、D、E、F分别代表10、11、12、13、14、15)

例:0x4A 0X14c7等

在计算机内部,数字均以二进制形式表示和存放,用户输入的普通十进制数字都要被计算机转换成二进制才能在计算机内部存储,同样计算机的运算结果也为二进制,一般要将其转换成十进制数再输出给用户阅读,这种转换通常由计算机自动实现。

(1)将十进制转换二进制、八进制和十六进制

除法:将十进制数除以2,记录余数,得到的商继续除以2,直到商为0,然后将各次相处所得的余数从后往前逆序排列,所得余数数字序列就是该十进制数对应的二进制数。八进制和十六进制转换方法同上。

例:十进制数13转换成二进制数的值为1101,转换八进制为015,转换成十六进制为D.

(2)将二进制、八进制和十六进制转换成十进制

乘积求和:将二进制的每一位从低位到高位(右边为低位,左边为高位)分别乘以20,21,22。。。。,然后将这些积求和。

例如:(1101)2=(13)10 (317)8=(207)10 (23E)16=(574)10

(3)二进制与八进制、十六进制数之间的相互转换

①二进制转八进制:从右往左每三位一组转换成十进制数,将所得数据组合就是对应的八进制数(注意:高位不足三位补零)。

例:(010 110 111)2=(267)8

②二进制转十六进制:从右往左每四位一组转换成十进制数,将所得数据组合就是对应的十六进制数(注意:高位不足四位补零)。

例:(0101 1011)2=(5B)16

③八进制转化二进制:每一位数字转换为三位二进制数字

例:(13)8=(001 011)2=(1011)2

(注意:去掉前面的两个00,因为0在高位没有意义)

④十六进制转化二进制:每一位数字转换为四位二进制数字

例:(E3)16=(1110 0011)2

4.2 整型常量

整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。

书写方式如下:

十进制整型常量:123 ,0 ,-24 , 85L(长整型常量)等

八进制整型常量:051 ,-026 ,0773 等

十六进制整型常量:0x55 , 0x1101 , 0x , 0x5AC0 , -0xFF。

其中L为长整型。

4.3 实型常量

实型常量有两种表示形式:小数形式和指数形式。

小数形式:5.4 0.074 -23.0

指数形式:5.4e0 4.3e-3 -3.3e4

(1)小数部分为0的实型常量,可以写为453.0 或453。

(2)用小数表示时,小数点的两边必须有数,不能写成“.453“和“453.“,而应该写成“0.453“和“453.0“。(3)用指数写法时,e前必须有数字,e后面的指数必须为整数(注意:整数阶码可以是正数,负数,也可以是八进制数、十六进制数,但必须为整数)。

4.4 字符常量

字符常量的标志是一对单引号‘’,c语言中的字符常量有两类:

(1)由一对单引号括起来的一个字符,如‘a ’, ‘r’,‘#’。注意: ′a′和′A′是两个不同的字符常量。(2)由一对单引号括起来,以反斜杠\开头,后跟若干数字或者字母,比如‘\n’,其中“\“是转义的意思,后面跟不同的字符表示不同的意思,这类字符常量叫转义字符。具体如图所示。

?

4.5 字符串常量

C语言中,以双引号括起来的,由若干个字符组成的序列即为字符串常量。

例:“ni hao”“happy”等等。

4.6 符号常量

符号常量是由宏定义“#define“定义的常量,在C程序中可用标识符代表一个常量。

例:计算圆的面积的c程序。

#include

#define PI 3.14159

{

float r,s;

r=12.5;

s=PI*r*r;

printf("s= %f",s);

}

说明:

#define 是宏定义,有关宏定义在以后的章节中详细说明,此程序中所有出现PI的地方都代表3.14159,同时PI称为符号常量。习惯上我们用大写字母来表示符号常量,小写字母表示变量,这样比较容易区别。

考点5. 变量

变量就是其值可以改变的量。变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值。不同类型的变量其存储单元的大小不同,变量在使用前必须定义。

5.1 整型变量

整型变量分为4种:基本型(int)、短整型(short int 或short)、长整型(long int 或long)和无符号型(unsigned int ,unsigned short,unsigned long)。

不同的编译系统对上述四种整型数据所占用的位数和数值范围有不同的规定。

?

说明:

单词signed来说明“有符号”(即有正负数之分),不写signed也隐含说明为有符号,unsigned用来说明“无符号”(只表示正数)。

5.2 实型变量

C语言中,实型变量分为单精度类型( float )和双精度类型( double )两种。如:

float a , b ;

double m ;

在vc中,float 型数据在内存中占4个字节(32位),double型数据占8个字节。单精度实数提供7位有效数字,双精度实数提供15~16位有效数字。实型常量不分float型和double型,一个实型常量可以赋给一个float 型或double 型变量,但变量根据其类型截取实型常量中相应的有效数字。

注意:实型变量只能存放实型值,不能用整型变量存放实型值,也不能用实型变量存放整型值。

5.3 字符变量

字符变量用来存放字符常量,定义形式:

char 变量名;

其中关键字char定义字符型数据类型,占用一个字节的存储单元。

cr1= ‘A’, cr2=‘B’;

将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中。例如,字符′A′的ASCII码为65,在内存中的存放形式如下:01000001

由于在内存中字符以ASCII码存放,它的存储形式和整数的存储形式类似,所以C语言中字符型数据与整型数据之间可以通用,一个字符能用字符的形式输出,也能用整数的形式输出,字符数据也能进行算术运算,此时相当于对它们的ASCII码进行运算。

考点6. 类型的自动转换和强制转换

当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:char < int < float < double

即左边级别“低“的类型向右边转换。具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。

在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。

除自动转换外,还有强制转换,表示形式是:

( 类型)(表达式);

例:(int)(a+b)

讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a+b)和(int)a+b的值分别为多少?

考点7. C运算符认识

C语言的运算符范围很广,可分为以下几类:

1、算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(--)共七种。

2、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

3、逗号运算符:用于把若干表达式组合成一个表达式(,)。

4、关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。

5、逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。

6、条件运算符:这是一个三目运算符,用于条件求值(?:)。

7、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

8、指针运算符:用于取内容(*)和取地址(&)二种运算。

9.、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。

10、特殊运算符:有括号(),下标[],成员(→,.)等几种。

另外,按参与运算的对象个数,C语言运算符可分为:单目运算符(如!)、双目运算符(如+,- )和三目运算符(如? :)。

考点8. 算术运算符和算术表达式

8.1 基本的算术运算符

(1)+(加法运算符或正值运算符,如2+5)。

(2)-(减法运算符或负值运算符,如4-2)。

(3)*(乘法运算符,如3*8)。

(4)/(除法运算符,如11/5)。

/的运算分为两种情况:

a、“除”的左右两边都为整数时,所得结果必然是整数(注意:仅取整数部分,不是四舍五入)

b、“除”的左右两边至少有一个是实型数据(即小数)时,所得结果为实型数据。

比如:5/2.0的值为2.5,7.0/2.0的值为3.5.

(5)%(模运算符或称求余运算符,%两侧均应为整型数据,如9%7的值为2)。

需要说明的是:当运算对象为负数时,所得结果随编译器不同而不同,在vc中,结果的符号与被除数相同,比如:13%-2值为1,而-15%2值为-1.

8.2 算术表达式和运算符的优先级与结合性

算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。

在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。

(1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。

(2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。

(3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。

8.3 自增自减运算符

作用:使变量的值增1或减1。

如:++i,--i (在使用i之前,先使i的值加1、减1)。

i++,i-- (在使用i之后,使i的值加1、减1)。

(1)只有变量才能用自增运算符(++)和自减运算符(--),而常量或表达式不能用,如10++或(x+y)++都是不合法的。

(2)++和--的结合方向是“自右向左“,如-i++ ,i的左边是负号运算符,右边是自增运算符,负号运算和自增运算都是“自右向左“结合的,相当于-(i++)。

在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i++”和“++i”及“i--”和“--i”的区别,特别弄清楚表达式的值和变量的值。

例:变量n的初始值为2,则

例:有以下程序

#include

main( )

{

int m=12,n=34;

printf("%d %d ",m++,++n);

/*输出表达式m++和表达式++n的值*/

printf("%d %d ",++m,n++);

/*输出表达式++m和表达式n++的值*/

printf("%d %d ",m,n);

/*输出m 、n的值*/

}

程序运行后的输出结果是_____

A.12 35 13 35 14 36 B. 12 35 14 35 14 36

C.12 35 14 36 14 36 D. 12 35 14 35 14 35

解析:自增自减运算需要注意区分表达式的值和变量的值,表达式运算后,变量会自增自减运算,表达式和变量变

考点9. 赋值运算符与赋值表达式

9.1 赋值运算符与赋值表达式

赋值符号“=“就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:

变量名= 表达式

在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。

例:a=12; 此表达式读作“将12的值赋值给变量a”。

说明:

a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,

例:int y=3.5;在变量y中最终存储的是整数3。

b、可以将复制表达式的值再赋值给变量,形成连续赋值。

例如:x=y=25 是一个连续赋值表达式,x=y=25 等价于x=(y=25),所以表达式x=y=25 最终的值为25 。

9.2 复合的赋值运算符

在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是:+=,-=,*=,/=,%= 。

两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。

如求表达a+=a-=a*a 的值,其中a的初值为12 。

步骤:

(1)先进行“a-=a*a“运算,相当于a=a-a*a=12-144=-132 。

(2)再进行“a+=-132“运算,相当于a=a+(-132)=-132-132=-264 。

考点10. 逗号运算符和逗号表达式

在c语言中,逗号除了作为分隔符,还可以用作一种运算符----逗号运算符,用逗号运算符将几个表达式连接起来,例如a=b+c,a=b*c等称为逗号表达式。

一般形式为:

表达式1 ,表达式2 ,表达式3 ,…,表达式n

例:x=2,y=3,z=4

逗号表达式具有从左至右的结合性,即先求解表达式1,然后依次求解表达式2,直到表达式n的值。表达式n的值就是整个逗号表达式的值。上述的逗号表达式的值就是表达式z=4的值4.需要注意的是,逗号运算符是所有运算符中级别最低的。

例:有如下程序段:

main()

{

int a=2,b=4,c=6,x,y;

y=(x=a+b),(b+c);

printf("y=%d,x=%d",y,x);

}

程序显示结果为:y=6,x=6

讨论:将y=(x=a+b),(b+c);改为y=((x=a+b),b+c) 的程序结果?

考点11. 关系运算符和关系表达式

11.1 C语言中的逻辑值

C语言中的逻辑值只有两个:真(true)和假(flase)。用非零代表真,用零代表假。因此,对于任意一个表达式,如果它的值为零,就代表一个假值,如果它的值为非零,就代表一个真值。只要值不是零,不管是正数,负数,整数,实数,都代表一个真值。例如-5的逻辑值为真。

11.2 关系运算符及其优先次序

C语言提供了6种关系运算符,见表

由两个字符组成的运算符之间不可以加空格,关系运算符都是双目运算符。

(1)结合性:自左向右。

(2)优先次序:前4种关系运算符( <,<=,>=,> )的优先级别相同,后两种(==,!=)优先级相同,且前4种优先级高于后两种;关系运算符的优先级低于算术运算符,高于赋值运算符。

11.3 关系表达式

由关系运算符连接而成的表达式称为关系表达式。

例如:a>b,(a=7)>(b=10)等都是合法的关系表达式。

关系表达式的结果有两个:0和1,。其中0表示假,1表示真。如果关系表达式成立,则值为真,如果关系表达式不成立,则值为假。

例:变量a的值为5,b的值为6,那么关系表达式a>b的值为假,即为0.而关系表达式

(a=13)>(b=10)的值为真,即为1。

当关系运算符两边值的类型不一致时,若一边是整型,一边是实型,系统将自动把整型数转化为实型数,然后再进行比较。

考点12. 逻辑运算符和逻辑表达式

12.1 逻辑运算符及其优先级

C语言提供了3种逻辑运算符,如下表。

说明:

“&&”和“||”是双目运算符,要求要有两个操作数,而“!”是单目运算符,只要求有一个操作数即可。以上逻辑运算符的优先级是:“!”(逻辑非)级别最高,其次是“&&”(逻辑与),“||”(逻辑或)级别最低,逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。

即:“!”(逻辑非)>算术运算符>关系运算符>“&&”>“||”>赋值运算符>逗号运算符。

12.2 逻辑表达式

“&&”和“||”的运算对象有两个,故它们都是双目运算符,而!的运算对象只有一个,因此它是单目运算符。逻辑运算举例如下:

(1)a&&b: 当&&两边都为“真”时,表达式a&&b的值才是真。

值得注意的是:在数学中,关系式0

(2)a||b: 当||两边有一个为“真”时,表达式a||b的值就是真。

(3)!a: 表示取反,如果a为真,则!A为假,反之亦然。例如!-5的值就为0.

在C语言中,由&&或||组成的逻辑表达式,在某些特定情况下会产生“短路“现象。

(1)x && y && z ,只有当x为真(非0)时,才需要判别y的值;只有x和y都为真时,才需要去判别z的值;只要x为假就不必判别y和z,整个表达式的值为0。口诀:“一假必假”。

例:(!5==1)&&(++i==0)(!5==1)表达式的值为0,所以计算机运行中就跳过(++i==0)此表达式,(!5==1)&&(++i==0)表达式的值为0.

(2)x||y||z ,只要x的值为真(非零),就不必判别y和z的值,整个表达式的值为1,只有x的值为假,才需要判别y的值,只有x和y的值同时为假才需要判别z的值,口诀:“一真必真”。

考点13. 位运算

13.1 位运算符

在计算机中,数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。C语言提供6种位运算符。

说明:

(1)位运算中除“~“以外,均为双目运算符,要求两侧各有一个运算量。

(2)运算量只能是整型或字符型数据,不能为实型数据。

13.2 位运算

位运算符& |~<< >> ∧按优先级从高到低排列的顺序是:

位运算符中求反运算“~“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与“&“、按位异或“∧“和按位或“|“。顺序为~ << >> & ∧| 。

例1左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。

例如:

a<<4

指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

例2右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:

设a=15,

a>>2

表示把000001111右移为00000011(十进制3)。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。

例3 设二进制数a是00101101 ,若通过异或运算a∧b 使a的高4位取反,低4位不变,则二进制数b是。

解析:异或运算常用来使特定位翻转,只要使需翻转的位与1进行异或操作就可以了,因为原数中值为1的位与1进行异或运算得0 ,原数中值为0的位与1进行异或运算结果得1。而与0进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。

如int a=3 , b=4;,想将a与b的值互换,可用如下语句实现:

a=a∧b;

a=a∧b;

所以本题的答案为:11110000 。

第二章顺序结构

考点1. C语句概述

C语言的语句用来向计算机系统发出指令,一个实际的源程序通常包含若干语句,这些语句用来完成一定的操作任务。

C程序中的语句,按照它们在程序中出现的顺序依次执行,由这样的语句构成的程序结构称为顺序结构。

1.1 其他类型语句

函数调用语句(由函数调用加一个分号构成),如scanf(“%d”,&a);。

表达式语句(由一个表达式;构成一个语句),如a=b;。

1.2 空语句

C语言中所有语句都必须由一个分号(;)结束,如果只有一个分号如main(){;},这个分号也是一条语句,称为空语句,程序执行时不产生任何动作,但表示存在着一条语句。

1.3 复合语句

在C语言中花括号“{ }”不仅可以用做函数体的开始和结束标志,同时也常用做复合语句的开始和结束标志,复合语句也可称为“语句体”。

在C语言中,任何表达式都可以加上分号构成语句,如“i++;”。随意加“;”会导致很多逻辑上的错误,要慎用,不要乱用。复合语句中最后一个语句中最后的分号不能忽略不写。

考点2. 赋值语句

前面已经介绍赋值语句是由赋值表达式和末尾的分号(;)构成的。这里要提醒读者注意:“=”与“==”是两个不同的运算符,前者才是赋值运算符,而后者是关系运算符,用来进行条件判断,不能把二者混为一谈。如“i=2;”,功能是把数值2放到变量i中,而i==2是判断变量i的值是否为2。“j=j+1;”在程序执行时,首先取出j中的值,执行加数值1的操作后再把新值放回到j中。

考点3. 输入输出概念及其实现

(1)数据从计算机内部向外部输出设备(如显示器、打印机等)输送的操作称为“输出”,数据从计算机外部向输入设备(如键盘、鼠标、扫描仪等)送入的操作称为“输入”。

(2)C语言本身不提供输入输出语句,可以通过函数来实现输入和输出的操作。

(3)在使用C语言库函数时,首先要用预编译命令“#include”将有关的“头文件”包含到用户源文件中。这里需要用到编译预处理命令,在后面的章节中我们会详细讲到。

3.1 单个字符的输入输出

3.1.1 字符输出函数putchar()

putchar( )函数的作用是向终端输出一个字符。

如:

putchar(a);

它输出字符变量a的值,a也可以是字符型变量或整型变量。若a是整型变量,则输出的是ASCII码值为该变量值的那个字符。

3.1.2 字符输入函数getchar()

getchar( )函数的作用是从终端输入一个字符,getchar()函数没有参数,函数值就是从输入设备得到的字符。getchar()只能接收一个字符,getchar()函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。如果在一个函数中(今为main()函数)要调用getchar()和putchar()函数,在该主函数之前的包

3.2 数据格式的输入与输出

3.2.1 printf()函数

printf( )函数是C语言提供的标准输出函数,它的作用是向终端(或系统隐含指定的输出设备)按指定格式输出若干个数据。

a. printf()函数的一般形式

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

如:

printf(“%f,%d”,x,y);

printf是函数名,括号内由以下两部分组成:

(1)“格式控制”:用双引号括起来的字符串是“格式控制”字符串,它包括两种信息。

①格式转换说明,由“%”和格式字符组成,如%d、%s等。上例中,当输出项为int 型时,系统规定用d作为格式描述字符,因此,有“%d”。当输出项为float或double类型时,用f或e作为格式描述字符。格式描述符要与输出项一一对应且类型匹配。

②需要原样输出的字符(通常指除了格式说明与一些转义字符外的那部分)也写在格式控制内。

(2)“输出表列”是需要输出的一些数据,可以是常量、变量或表达式。例如:

printf(“x=%d y=%d”,x,y);

其中,“x=%d y=%d”是格式说明;x,y是输出表列。输出表列中的各输出项要用逗号隔开。若x,y的值为7,8 ,以上两条输出结果为:

x=7 y=8

在两数之间有空格,因为在两个格式说明符中间有一个空格。

b. 格式字符

可以根据需要在“%”与格式字符之间插入“宽度说明”、左对齐符号“-”、前导零符号“0”等。

(1)d格式符,用来对十进制数进行输入输出,其中“%d”按整型数据的实际长度输出,“%md”指定m为输出字段所占的宽度。

(2)o格式符,以八进制数形式输出整数,同样可以通过如“%8o”的格式指定输出时所占的宽度。

(3)x格式符,以十六进制数形式输出整数,同样可以通过如“%12x”的格式指定输出时所占的宽度。

(4)u格式符,用来输出unsigned 型数据,即输出无符号的十进制数。

(5)c格式符,用来输出一个字符。

(6)s格式符,用来输出一个字符串。

(7)f格式符,用来输出实数(包括单、双精度),以小数形式输出,使整数部分全部如数输出。

(8)e格式符,以指数形式输出实数。

(9)g格式符,用来输出实数。

对于f、e、g格式符可以用“整型数1?闭?型数2“的形式,在指定宽度的同时来指定小数位的位数,其中,“整型数1”用来指定输出数据所占的总宽度,“整型数2”用来确定精度。精度对于不同的格式符有着不同的含义。当输出位数多于“整型数2”指定的宽度时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理。当输出数据的小数位数少于“整型数2”指定的宽度时,在小数的最右边添0,当输出的数据所占的宽度大于“整型数1”指定的宽度时,小数位仍按上述规则处理,整数部分并不丢失。也可以用“?闭?型数2”的形式来指定小数位数,这时输出的数据所占宽度由系统决定。通常,系统对float类型提供7位有效位数,对于double类型提供15位有效位数。

c. 使用printf()函数时的注意事项

(1)在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配,如不匹配将导致数据输出出现错误,如在输出long型数据时,一定要用%ld格式控制,而不能用%d格式控制。

(2)在格式控制串中,格式说明与输出项的个数也要相等,如格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0值)。

(3)在格式控制串中,除了合法的格式说明外,可以包含任意的合法字符(包括转义字符),这些字符在输出时将被“原样输出”。

(4)如果要输出“%“,则应该在格式控制串中用两个连续的百分号“%%”来表示。

3.2.2 scanf()函数

a. scanf()函数的一般形式

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

其中scanf是函数名,“格式控制“的含义同printf( )函数,“地址表列“由若干个变量地址组成,既可以是变量的地址,也可以是字符串的首地址(参见“字符数组“一节)。

例如:

scanf(“%d”,&a);

printf(“%d”,a);

运行时输入123,按回车键后则会在屏幕上输出整型变量a的值123 。其中“%d”是格式控制字符串。&a 是输入项。其中的“&”是“取地址运算符”,&a指a在内存中的地址,如需要有多个输入项时,输入项之间要用逗号隔开。在实际输入时,若一次向计算机输入多个数据,则每两个数据间要以一个或多个空格间隔,也可以用回车键或跳格键【Tab】。

b. 格式说明

scanf()函数中的格式说明也是以%开始,以一个格式字符结束,中间可以加入附加的字符。

说明:

(1)对unsigned型变量的数据,可以用%d、%o、%x格式输入。

(2)在scanf( )函数中格式字符前可以用一个整数指定输入数据所占宽度,但对于实型数则不能指定其小数位的宽度。

(3)在格式控制串中,格式说明的个数应该与输入项的个数相等,且要类型匹配,如不匹配,系统也不会给出出错信息,但有可能使程序的结果不正确。若格式说明的个数少于输入项的个数,scanf( )函数结束输入,多余的项继续从终端接收新的数据,若格式说明的个数多于输入项个数时,scanf( )函数同样也结束输入。

c. 使用scanf()函数时应注意的问题

(1)scanf()函数中的输入项只能是地址表达式,而不能是变量名或其他内容,也就是说输入项必须是某个存储单元的地址,这一点一定要掌握。

例如:

int m,n;

scanf(“%d,%d”,m,n);

是不对的,应将其中的“m,n“改为“&m,&n”。

(2)如果在“格式控制“字串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。

(3)在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。

(4)在输入数据时,若实际输入数据少于输入项个数,scanf( )函数会等待输入,直到满足条件或遇到非法字符才结束;若实际输入数据多于输入项个数,多余的数据将留在缓冲区备用,作为下一次输入操作的数据。

在输入数据时,遇到以下情况时认为输入结束。

遇空格、按“回车”或“跳格”(【Tab】)键,上述字符统一可称为“间隔符”。

在程序运行到要求实际输入时,间隔符的数目不限,按指定的宽度结束,如“%3d”,只取3列。

scanf( )函数中的格式控制串是为输入数据用的,其间的字符不能实现原样输出。若想在输入时出现提示性语言,则需要另外使用printf语句。

第三章选择结构

考点 1 . if语句和用if语句构成的选择结构

if语句用来对所给定的条件进行判定,判断其表达式的值是否满足某种条件,并根据判定的结果(真或假)决定执行给出的两种操作中的哪一种。

1.1 if语句的几种形式

(1)if(表达式)语句

例如:

printf(“The answer is right!\n“);

其中,if是C语言的关键字,a>b是条件判断表达式。表达式两侧的括号不可少,并且只能是圆括号,不能用其他括号替代。紧跟着的是一条输出语句,称为if子句,如果在if子句中需要多个语句,则应该使用大括号({})把一组语句括起来构成复合语句,这样在语法上满足“一条语句“的要求。

(2)if(表达式)

语句1

else 语句2

例如:

if(a>b)printf(“The answer is right.\n“);

else printf(“The answer is wrong.\n“);

(3)if(表达式1)语句1

else if(表达式2)语句2

else if(表达式3)语句3

else if(表达式m)语句m

else 语句n

“语句1“是if子句,“语句2…语句m“是else子句。这些子句在语法上要求是一条语句,但需要执行多条语句时,则应该使用花括号({})把这些语句括起来组成复合语句。

else不能独立成为一条语句,它只是if语句的一部分,不允许单独出现在程序中。else必须与if配对,共同组成if…else语句。

1.2 if语句的嵌套

在if语句中又包含一个或多个if语句结构,称为if语句的嵌套,一般形式如下:

if( )

if()语句1

else语句2

else

if()语句3

else语句4

应当注意:else总是与它上面的最近的没有与else配对的if配对。

1.3 条件运算符构成的选择结构

有如下语句:

if(x

min=x;/*求两数中较小的一个*/

else min=y;

可以用min=(x

优先级:条件运算符高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。

考点2. switch语句和goto语句

2.1 switch语句

switch语句是C语言提供的多分支选择语句,用来实现多分支选择结构。它的一般形式如下:

switch(表达式)

{

case 常量表达式1 :语句1

case 常量表达式2 :语句2

case 常量表达式n :语句n

}

说明:

(1)switch是关键字,switch后面用花括号括起来的部分是switch语句体。

(2)switch后面括号内的“表达式“,可以是C语言中任意合法表达式,但表达式两侧的括号不能省略。

(3)case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式的类型相匹配,且各case语句标号的值各不相同,不能重复。

(4)default也是关键字,起标号的作用,代表除了以上所有case标号之外的那些标号,default标号可以出现在语句体中任何标号位置上,当然,也可以没有。

(5)case语句标号后的语句1、语句2等,可以是一条语句,也可以是若干条,在必要时,case语句标号后的语句可以省略不写。

case和常量表达式之间一定要有空格。

2.2 语句标号

语句标号用标识符表示,它的命名规则与变量名相同,即由字母、数字和下画线组成,在标识符后加一个冒号,就成了一个语句标号。在C语言中可以在任何语句前加上语句标号。

2.3 goto语句

goto语句为无条件转向语句,goto语句的一般形式如下:

goto 语句标号;

goto语句的作用:把程序的执行转向语句标号所在的位置,这个语句标号必须与此goto语句同在一个函数内,滥用goto语句将使程序的流程毫无规律,可读性差,因此初学者应慎用。

第四章循环结构

在许多问题中,需要做某些重复执行的操作,这时就会用到循环结构。在程序设计中也一样,例如,对1~100之间的自然数进行求和计算,计算某班级所有同学的成绩总分,还有很多,几乎所有的程序都会包含循环控制结构。循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。

1) 用while语句;

2) 用do-while语句;

3) 用for语句;

考点. 1 while循环语句

while语句

while语句一般形式如下:

while(表达式)

循环体

说明:

while是C语言的关键字。紧跟其后的表达式可以是C语言中任意合法的表达式,该表达式是循环条件,由它来控制循环体是否执行。循环体可以是一条可执行语句,当多项操作需要多次重复做时,可以使用复合语句。

执行过程:

(1)计算紧跟while后括号中表达式的值,当表达式的值为非0时,则接着执行while语句中的内嵌语句;当整个表达式值为0时,则跳过该while语句,执行该while结构后的其他语句。

(2)执行循环体内嵌语句。

(3)返回去执行步骤(1),直到条件不满足,即表达式的值为0时,退出循环,while结构结束。

特点:先对表达式进行条件判断,后执行语句。

while语句构成的循环结构不同于由if语句构成的选择结构。当if后面的条件表达式的值为非零时,其if子句只执行一次;而当while后面的条件表达式的值为非零时,其后的循环体中的语句将被重复执行。而且在设计循环时,

例如:用while循环求自然数1到100的和,程序段如下:

#include

main()

{

int i,sum=0;

i=1;

while(i<=100)

{

sum=sum+i;

i++;

}

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

}

考点2 . d o…while循环语句

do…while语句

do …while 循环结构的一般形式如下:

do

循环体语句

while(表达式);

说明:

(1)do是C语言的关键字,必须和while联合使用,不能独立出现。

(2)do …while 循环由do 开始,用while结束。在语法上,在do和while之间只能是一条语句,如需要执行多条语句时,可以用大括号({})括起来,构成复合语句。必须注意的是:while(表达式)后的分号不可丢,它用以表示do …while 语句的结束。

(3)while后面的圆括号中的表达式,可以是C语言中任意合法的表达式,由它控制循环是否执行,且圆括号不可丢。执行过程:先执行一次指定的循环体语句,执行完后,判别while后面的表达式的值,当表达式的值为非零(真)时,程序流程返回,去重新执行循环体语句。如此反复,直到表达式的值等于零为止,此时循环结束。

特点:先执行循环体一次,然后判断循环条件是否成立。

do…while 构成的循环与while循环十分相似,它们之间的重要区别是: while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do …while 构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。

例如:用do-while循环求自然数1到100的和,程序段如下:

#include

#include

main()

{

int i,sum=0;

i=1;

do

{

sum=sum+i;

i++;

}

while(i<=100);

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

}

考点3. for循环语句

for语句

for语句的一般形式为:

for(表达式1;表达式2;表达式3)

语句

说明:for是C语言中的关键字,其后的圆括号中通常是3个表达式,这3个表达式可以是C语言中任意合法表达式,它们通常用于for循环的控制。各个表达式之间用“;“隔开,且圆括号不可省略。按照语法规则,循环体只能是一条语句,如需要完成多项操作,可以用大括号({})括起来构成复合语句。

执行过程:

(1)先求表达式1的值。

(2)求表达式2的值,若其值为真(非0),则执行for语句中指定的内嵌语句后执行下面步骤(3),若其值为假(0),则退出循环,执行for以下的其他语句。

(3)求解表达式3的值。

(4)重复执行步骤(2)。

例:用for循环求自然数1-100的和,程序段如下:

#include

main()

{

int i,sum=0;

for(i=0;i<=100;i++)

{

sum=sum+i;

}

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

}

考点4. 循环的嵌套

循环嵌套

在某一个循环体内部又包含了另一个完整的循环结构,称为循环的嵌套。前面介绍的3种类型的循环都可以互相嵌套,循环的嵌套可以多层,但要保证每一层循环在逻辑上必须是完整的。

例有如下程序段:

#include

main()

{

int i, j;

for (i=0; i<2; i++)

for(j=0; j<2; j++)

printf("%d %d \n", i, j);

}

程序显示的结果是:

0 0

0 1

1 0

1 1

考点5. 几种循环的比较

循环的比较

前面讲的几种循环都可以用来处理同一问题,一般情况下它们可以互相代替。不过最好根据每种循环的不同特点选择最适合的。

while和do …while 循环,只在while后面指定循环条件,循环体内应包含使循环趋于结束的语句,for中使循环趋于结束的操作可以包含在“表达式3“中。由while完成的循环,用for循环都能完成。在for语句“表达式1“中可以实现循环变量的初始化,而while和do…while的循环变量初始化应在while和do…while语句之前完成。

考点6. break语句和continue语句

6.1 break语句

在break后面加上分号就可以构成break语句。

在介绍选择结构时,我们已经知道break语句可以使流程跳出switch结构,继续执行switch语句下面的语句。实际上,break语句还可以用于从循环体内跳出,即提前结束循环。

说明:

(1)break语句只能出现在循环体内及switch语句内,不能用于其他语句。

(2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环,当然也不再去进行条件判断。

6.2 continue语句

一般形式为:continue;其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而转去重新判定循环条件是否成立,从而确定下一次循环是否继续执行。

与break语句不同,执行continue语句并没有使整个循环终止。在while和do …while 循环中,continue语句使得流程直接跳到循环控制的条件判断部分,然后决定循环是否继续执行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去求解for语句中的“表达式3“的值,然后再次对“表达式2“的条件进行判断,最后根据“表达式2“的值来决定for循环是否继续执行。continue不管是作为何种语句中的语句成分,都按上述功能执行。continue语句和break语句的区别是: continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

例如输入任意的自然数,判断此数是不是素数,有程序段如下:

#include

#include

main()

{

int m,i,k;

scanf("%d",&m);

k=sqrt(m); /*此公式用于求m开根号*/

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>=k+1)

printf("%d is a prime number\n",m);

else

printf("%d is not a prime number\n",m);

}

第五章函数

考点1. 函数概述

在前面各章的例子及读者自己编写的C语言程序中都用到了以“main“开头的主函数,并且在程序中频繁地调用了C语言提供的用于输入输出的库函数( scanf( )和printf( )函数)。

函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。一个C程序可由一个主函数和若干个其他函数构成,并且只能有一个主函数。由主函数来调用其他函数,其他子函数之间也可以互相调用。

C程序的执行总是从main( )函数开始。调用其他函数完毕后,程序流程回到main( )函数,继续执行主函数中的其他语句,直到main( )函数结束,则整个程序的运行结束。main( )函数是由系统定义的。所有的函数都是平行的,即在函数定义时它们是互相独立的,函数之间并不存在从属关系。也就是说,函数不能嵌套定义(这是与PASCAL不同的),函数之间可以互相调用,但不允许调用main( )函数。

从用户的使用的角度看,函数有两种:

(1) 标准函数,即库函数。这些函数由系统提供,可以直接使用。

(2) 自定义的函数。用以解决用户需要时设计定义的函数。

从函数的形式看,函数分为两类:

(1)无参函数。

(2)有参函数。

考点2. 函数定义的一般形式

函数的定义

C语言中函数定义的一般形式如下:

函数返回值的类型名函数名(类型名形式参数1,类型名形式参数2,…)

{

说明部分;

语句部分;

}

说明:函数名和各个形式参数都是由用户命名的合法标识符,与普通变量名的定义规则相同。在同一程序中,函数名必须唯一,不能出现重名的情况。形式参数名只要在同一函数中唯一即可,由于形式参数的作用域不相同,因此形式参数名可以与其他函数中的变量名同名。C语言规定,不能在一个函数内部再定义函数,也就是说函数不能嵌套定义。

(1)若在函数的首部省略了函数返回值的类型名,可以把函数首部写成:

函数名(类型名形式参数1 ,类型名形式参数2 ,…,类型名形式参数n)

(2)紧跟在函数名之后的圆括号中的内容是形式参数和类型说明表,在每个形参之前都要有类型名,以标识形式参数的类型。各形参的定义之间用逗号分隔。

例如,求两整数和的函数:

int add(int a ,int b)

{

int t; /* 函数体中声明部分*/

t=a+b;

return t;

}

若所定义的函数没有形参,函数名后的一对圆括号依然不能省略。本例中函数体中的语句是用来完成求和的功能。在某些情况下,函数体可以是空的,例如:

fun()

{ }

该函数中没有任何语句,什么工作也不做,没有任何实际作用。之所以要在主调函数上这样写,是为了表明此处要调用一个函数,而现在这个函数的具体功能可能还没有设计好,没有起作用,等以后扩充函数功能时补充上即可。

(3)在函数体中,除形参外,用到的其他变量必须在说明部分进行定义,这些变量(包括形参)只在函数被调用时才被

存在。因此,这些变量只在函数体内部起作用,与其他函数体内的变量并不相关。

考点3. 函数参数和函数返回值

3.1 形式参数和实际参数

在程序中调用函数时,绝大多数情况下,主调函数和被调函数之间会发生数据传递关系,这就要用到前面提到的有参函数。在定义函数时,函数名后面括号中的变量称为“形式参数“(简称“形参“);在主调函数中,函数名后面括号中的参数(可以是一个表达式)称为“实际参数“(简称“实参“)。

说明:

(1)实参可以是常量、变量或表达式。

(2)在被定义的函数中必须指定形参类型。

(3)实参与形参的类型应相同或赋值相兼容。

(4)C语言规定,实参变量对形参变量的数据传递是“值传递“,即单向传递。只能由实参传给形参,而不能由形参返回来给实参。在内存中,实参单元与形参单元是不同的单元。

(5)在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参。调用结束后,形参单元被释放,实参单元仍保留并维持原值。

3.2 函数的返回值

函数的返回值就是通过函数调用使主调函数能得到一个确定的值。函数的值通过return语句返回,return语句的形式如下:

return 表达式;

或return(表达式);

或return;

return 语句中的表达式的值就是所求的函数值。此表达式值的类型必须与函数首部所说明的类型一致。若类型不一致,则以函数值的类型为准,由系统自动进行转换。

例如通过函数调用的方法求1到自然数n(n>1)自然数的和,有程序段如下

#include

int s(int n)

{

int i,sum=0;

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

sum+=i;

return sum;

}

main()

{

int n;

printf("input number\n");

scanf("%d",&n);

n=s(n);

printf("1到n的和为:%d\n",n);

}

考点4. 函数的调用

4.1 函数调用的一般形式

函数调用的一般形式为:

函数名(实参表列);

函数的调用可以分为调用无参函数和调用有参函数两种,如果是调用无参函数,则不用“实参表列“,但括号不能

2018计算机二级C语言考试真题汇总

模拟卷 1 1[ 填空题] 下列给定程序中,函数 fun 的功能是:在形参 S 所指字符串中寻找与参数 C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若 s 所指字符串为“ baacda”, c 中的字符为 a,执行后 S 所指字符串为“ baaaacdaa ”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序:

参考解析: 【参考答案】 【解题思路】 填空 1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0 ’。 填空 2:while语句用以确定字符串的长度,所以变量n 赋初值为 0。 填空 3:题目要求如果找到与参数 c 相同的字符,就在后面插入一个相同的字符,且找到后应该给 数组元素赋值,本题目给出参数为 c。 二、程序修改题 2[ 简答题] 下列给定程序中函数 fun 的功能是:逐个比较 p、q 所指两个字符串对应位置上的字符,并把 ASCII 值大或相等的字符依次存放到 c 所指的数组中,形成一个新的字符串。 例如,若主函数中 a 字符串为“aBCDeFgH”,b 字符串为 "Abcd" ,则 c 中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构! 参考解析: 【参考答案】(1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1) 变量 k 存放数组 e 的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三.程序设计题 3[ 简答题]

计算机c语言二级考试复习资料

第一章C语言概述 一、选择题: 1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束 2、在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 4、一个C 语言程序是由( B )。 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题: 1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。 4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。 5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。 6、C 语言的标识符只能由字母、数字和下划线三种字符组成。 第三章数据类型、运算符和表达式

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

计算机二级考试C语言练习题及答案

一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B

全国计算机等级考试二级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)不以分号结尾

计算机二级C语言测试题

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和 */ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

计算机等级考试二级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、标识符分为关键字、预定义标识符、用户标识符。

全国计算机二级C语言操作题题库

1.程序Cmody021.c输出如下所示图形: * *** ***** ******* ********* #include void main() { int i,j;for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++)printf(" "); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 2.程序Cmody032.c的功能是:输出201-300之间的所有素数,统计总个数。#include #include void main() { int num; printf("\n"); num=fun(); printf("\nThe total of prime is %d",num); getch(); } int fun() { int m,i,k,n=0; for(m=201;m<=300;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) /**/if(m/i==0)/**/ break; /**/if(i==k)/**/ { printf("%-4d",m); n++;

if(n%10==0)printf("\n"); } } return n; } 3. 程序Cmody041.c,其功能是统计输入字符串中小写英文字母的个数。如输入:abcdEFGHIJK123 输出:4 #include #include main() { char str1[128]; /**/int i,len,sum=0;/**/ gets(str1); len=strlen(str1); for(i=0;i='a'&&str1[i]<='z')/**/ sum++; } printf("%d\n",sum); getch(); } 4.程序Cmody051.c,其功能是统计输入字符串中大写英文字母的个数。如输入:abcDEFGH123 输出:5 #include #include main() { /**/char str1[128]/**/ int i,len,sum=0; printf("Please input a string:\n"); scanf("%s",str1); len=strlen(str1); for(i=0;i='A'&&str1[i]<='Z') /**/sum++;/**/

全国计算机二级考试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】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

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

计算机二年级考试C语言 知识点总结 Newly compiled on November 23, 2020

计算机二级考试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)实型数据的合法形式: 就是合法的,且数据是×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

计算机二级C语言测试题及答案解析(一)

2016年计算机二级C语言测试题及答案解析(一)1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C 开始执行。 A、程序中第一条可执行语句 B、程序中第一个函数 C、程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是(C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A、C程序的工作过程是编辑、编译、连接、运行 B、C语言不区分大小写。 C、C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。

B、a[i] C、a2_i D、int t 5~8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成 数字不能作为标识符的开头 关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C )。 A、%x B、a+b C、a123

选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C 中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C 。 A、2.5 B、2 C、1 D、3 %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%

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

计算机二级C++考试复习资料(全) 一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup博士并不是从头开始设计新语言,而是在C语言的基础上进行创建。这就是C++语言。 1985年,C++开始在外面慢慢流行。经过多年的发展,C++已经有了多个版本。为次,ANSI和ISO的联合委员会于1989年着手为C++制定标准。1994年2月,该委员会出版了第一份非正式草案,1998年正式推出了C++的国际标准。 (二) C和C++ C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C 程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。 C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 二、关键字和变量 C++相对与C增加了一些关键字,如下: typename bool dynamic_cast mutable namespace static_cast using catch explicit new virtual operator false private template volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool型变量和wchar_t型变量: 布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。 #include iostream.h int main() { bool flag; flag=true; if(flag) cout< return 0; }

2020年全国计算机二级C语言考试必考重点知识总结

2020年全国计算机二级C语言考试必考重 点知识总结 C语言知识点总结 (1) 一、常量 (3) 二、标识符 (4) 三、变量 (4) 四、表达式 (5) 五、输入输出函数 (8) 六、C语言的语句 (9) 七、C程序的基本结构 (10) 八、选择结构语句 (10) ?if(表达式) 语句1 else 语句2 (10) ?条件运算符表达式1? 表达式2 : 表达式3 (11) ?switch语句 (11) 九、循环结构 (12) ?for循环语句 (12) ?while循环语句do while循环语句 (13) 十、数组 (13) 十一、字符串函数 15 十二、函数

16 十三、指针 18 十四、宏定义 20 十五、结构体,共用体,枚举类型 21 十六、Turbo C的使用错误!未定义书签。

一、常量 ?数字常量 i.普通数字:1,35,2.7 ii.指数形式:2.45e-2等价于2.45*10-2注意e大小写皆可,e 前面的数字不能省,就算是1也不能省,后面的数字一定要 是整数 iii.长整型,单精度浮点型:3235L,32.5F 分别表示3235是长整型数据,32.5是单精度浮点型左,若不写上L,F则表示 3235是整型,32.5是双精度浮点型,L,F大小写皆可 ?字符常量 i.普通字符常量:用单引号把一个字符括起来,如’A’,’@’ ii.转义字符常量:一对单引号括起来并以“\”开头的字符序列,如’\n’(回车)、’\123’(8进制123对应的字符), ’\x23’(16进制 23对应的字符) ?字符串常量 用一对双引号把一个字符序列括起来,如“ABCef”,系统存 放字符串常量,每个字符分配一个字节,各字符所占字节紧邻,并且字符串末尾会给再开一个字节里面放一个’\0’做为结束标 志。 ?符号常量 定义格式#define 符号常量名符号常量值,如#define N 20 则定义了符号常量N,其值为20,注意符号常量名和符号常

计算机二级C语言考试内容

计算机二级 公共基础知识 基本要求 1.掌握算法的基本概念。 2.掌握基本数据结构及其操作。 3.掌握基本排序和查找算法。 4.掌握逐步求精的结构化程序设计方法。 5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6.掌握数据库的基本知识,了解关系数据库的设计。 考试内容 一、基本数据结构与算法 1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5.线性单链表、双向链表与循环链表的结构及其基本运算。 6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。

7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、程序设计基础 1.程序设计方法与风格 2.结构化程序设计。 3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、软件工程基础 1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3.结构化设计方法,总体设计与详细设计。 4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5.程序的调试,静态调试与动态调试。 四、数据库设计基础 1.数据库的基本概念:数据库,数据库管理系统,数据库系统。 2.数据模型,实体联系模型及E―R图,从E―R图导出关系数据模型。 3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。

计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 或35 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 :m联系 :n联系 :1联系 :l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

全国计算机等级考试二级笔试样卷C语言程序设计(含答案)

全国计算机等级考试二级笔试样卷C语言程序设计 【打印】【字体:大中小】【关闭】 一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A)源程序要文档化B)数据说明的次序要规范化 C)避免滥用goto语句D)模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A)概要设计与详细设计B)数据设计与接口设计

C)软件结构设计与数据设计 D)过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试B)概要设计 C)软件维护 D)详细设计 (4)在数据库系统中,用户所见的数据模式为 A)概念模式B)外模式C)内模式D)物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运行阶段 D)物理设计 (6)设有如下三个关系表 R S T

下列操作中正确的是 A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S (7)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 (8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63 B)64 C)6 D)7 (9)数据库技术的根本目标是要解决数据的

2019年计算机二级考试考点C语言的几大考点

2019年计算机二级考试考点C语言的几大考点 导语:###为您整理了2017年全国计算机二级考点模拟试题,方便广大网友查阅!更多计算机软件水平考试相关信息请访问计算机软件水平考试网。 【考点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)用户标识符。用户根据需要定义的标识符,符合命名规则且不与 关键字相同。 关键字不能够作为用户标识符号。main define scanf printf 都不 是关键字。迷惑你的地方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。

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

相关主题
文本预览
相关文档 最新文档