VC++二级考试复习资料.docx

上传人:b****5 文档编号:5782398 上传时间:2023-01-01 格式:DOCX 页数:36 大小:36.47KB
下载 相关 举报
VC++二级考试复习资料.docx_第1页
第1页 / 共36页
VC++二级考试复习资料.docx_第2页
第2页 / 共36页
VC++二级考试复习资料.docx_第3页
第3页 / 共36页
VC++二级考试复习资料.docx_第4页
第4页 / 共36页
VC++二级考试复习资料.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

VC++二级考试复习资料.docx

《VC++二级考试复习资料.docx》由会员分享,可在线阅读,更多相关《VC++二级考试复习资料.docx(36页珍藏版)》请在冰豆网上搜索。

VC++二级考试复习资料.docx

VC++二级考试复习资料

VC++等级考试要求、知识点与试题

第一部分VisualC++的基本概念。

[考试要求]一、源程序的格式、风格和程序的结构。

[考试要求]二、常量表示法[字符和字符串常量,短整型、整型和长整型,实数(float)和双精度实数(double)]。

★★

[主要知识点]

1、字符有两种表示法。

(1)基本表示方法。

格式:

‘单个西文字符’,如‘a’、‘+’、‘9’、‘“’。

(2)转义表示法。

格式①:

‘\特殊控制字符’,如‘\n’、‘\t’等。

格式②:

‘\字符的八进制ASCII码值’,如‘\46’、‘\064’等,而‘\048’不正确。

格式③:

‘\字符的十六进制ASCII码值’,如‘\x4C’等。

(3)表示字符时注意:

①字符只能是单个的西文字符,如‘中’、‘。

’、‘45’等是错误的;

②大多数的字符都可以用以上两种方式表示,而某些特殊的字符只能用转义法表示,如‘‘’‘\’等是错误的;

③字符的ASCII码值(十进制)在0~255之间,对应于八进制是0~377,对应于十六进制是0~FF,如‘\400’、‘\x100’是错误的。

2、字符串的表示。

(1)表示字符串常量的方法。

格式:

“一串字符”,如“a”、“中”、“123”、“xyz‘3’abc”。

(2)字符串还可以用字符数组、字符型指针等变量表示。

如:

chars[]=“123”,*p=“abc”;

(3)表示字符串时注意:

①字符串总隐含一个结束标记‘\0’,如“a”占2个字节,“abc\0”占4个字节;

②字符串是若干个字符的组合,其中的大多数字符既可以用基本方法表示,也可以用转义法表示,如“abc”和“a\142c”是两个一样的字符串;而有些字符只能用转义法表示,如“123“abc”456”、“123\xyz”等是错误的;

③字符串的长度和其所占的字节数是两个概念,如“abc\0xyz”占8个字节(sizeof(“abc\0xyz”)的值为8),其长度为3(strlen(“abc\0xyz”)的值为3)。

设有:

chars1[50]=“abc\12345xyz\01234\0x1234”,s2[]=“abc\12345xyz\01234\0x1234”;

inta=sizeof(s1),b=strlen(s1),c=sizeof(s2),d=strlen(s2);

则a、b、c、d的值各为多少?

(4)常用字符串处理函数操作字符串。

①常用函数:

strcpy(s1,s2)、strcat(s1,s2)、strlen(s)、strcmp(s1,s2)等。

②注意字符串操作开始的位置。

③注意字符串中的结束标记。

如:

chars1[]=“abc\0123\0x456\0def”,s2[]=“xyz\0789”,s3[100],*p=s2+2;

strlen(s1+6)的值为4;strcpy(s3,s1)后s3为“abc\0123”;strcat(s1,p)后s1为“abc\0123z\0789”。

3、整型。

(1)包括(存储空间,表示数的范围):

基本整型(缺省)、短整型和长整型,以及无符号整型和有符号整型(缺省)。

(2)有十进制(缺省)、八进制和十六进制。

如:

50L、50U、50LU、50UL、0x2ED、0XAC、050等都是正确的整型常量,而068、xED、XA都是不正确的整型常量。

4、实型。

(1)有单精度(float)和双精度(double)之分。

(2)表示方法。

基本方法(十进制小数):

如2.5、-3.0、0.8、.9等。

指数表示法:

x×10y表示为xEy或xey,其中x为十进制小数,y为整数,如.9e2、12.34E-5等。

(3)表示实数时注意:

①实数只能是十进制的,其他进制无效,如064e2与64e2是同一个数(6400),而064(52)与64不等;

②指数表示时,e(E)的前面必须有数,后面只能是整数,如102应表示为1e2,而e2、2e2.0是错误的;

③整数和实数的运算规则有区别,如10.0/4为2.5,而10/4为2。

5、符号常量。

(1)用const表示,如constintx=5;constfloaty=5;

(2)用宏定义表示,如#definex5。

[试题]

[2002秋]设有四个常数:

①4e5.0、②‘\87’、③0X5A、④“\””,其中符合C++语法规则的常量是。

A.②③B.②④C.③④D.①②

[2003秋]以下常数表示中不正确的是。

A.‘\55’B.‘55’C.‘\x55’D.0X55

[考试要求]三、各种类型变量的说明及其初始化。

★★

[主要知识点]

1、定义格式。

数据类型变量名=数据;或数据类型变量名(数据);

2、注意问题。

(1)变量名应为合法标识符:

①标识符只能由英文字母(52个)、数字(10个)和下划线(_)组成。

如:

A$b、a-b等都是错误的。

②不能以数字开头。

如:

1a是错误的。

③不能是关键字。

如:

Float是正确的,而float是错误的。

(2)用来初始化的常量应与所定义的变量类型一致。

[试题]

[2006春]选择题21B

[2006秋]选择题22AC

[2007春]填空题4下划线

3、变量的作用域:

块(一对花括号“{}”括起来的部分)作用域、文件作用域、函数原型作用域和函数作用域。

(1)全局变量:

在函数外定义的变量。

①具有文件作用域;

②具有缺省初值0;

③遇到同名的局部变量时,按照局部优先的原则,缺省使用的是局部变量;若使用全局变量,可通过作用域运算符:

:

实现。

(2)局部变量:

在函数中定义的变量。

①具有块作用域;

②同一个块中变量不能同名,不同块中可使用相同名字的变量;

③形参也是局部变量,作用域为函数体;

④for语句头部说明的变量,其作用域为包含for语句的块,而for语句循环体中说明的变量,其作用域为循环体。

如下函数定义的变量中,i和aver为重复定义,而j和k没有问题。

voidf(floataver)

{

for(inti=1,j=0;i<=10;i++){

intk=1;j+=i;k*=i;

}

for(inti=20,aver;i<=30;i++){

intk=1;k*=i;j+=i;aver/=i;

}

}

4、变量的存储类型:

自动、静态、寄存器和外部。

(1)自动类型变量是局部变量,具有块作用域,进入作用域分配空间,出作用域释放空间;

(2)静态类型变量可以是局部变量(块作用域),也可以是全局变量(文件作用域),但一直存在,并具有初值0;首次进入作用域分配空间,再次进入延续前值,程序结束释放空间。

[试题]

[2006春]填空题6(6)3415(7)2040

[2006秋]选择题29B

四、运算符与表达式。

[考试要求]

(一)算术运算、逻辑运算、关系运算、++和--运算、三目条件运算符;★★★

[主要知识点]

1、“/”运算符的整除;

2、操作数的类型,如“%”的操作数必须是整型;

3、“=”与“==”的区别;

4、“++”和“--”运算符的前置与后置;

5、只能变量才能进行“++”和“--”运算;

6、逻辑运算和关系运算的结果是逻辑值(0或1);

7、sizeof()所求的是数据在内存中占的字节数。

[试题]

[2006秋]选择题30B

[2007秋]填空题21C

[2007春]选择题21C

[考试要求]

(二)运算符的优先级;结合规则和目数的概念;

[2007春]填空题3

[考试要求](三)类型的自动转换和强制类型转换;★★

[主要知识点]

1、自动转换

(1)不同类型数据参与运算时,由低向高自动转换:

char→int→float→double;

(2)向变量赋值时,类型由变量决定。

2、强制类型转换

不能自动转换时,必须强制转换,格式为:

(数据类型)数据或数据类型(数据)。

[考试要求](四)表达式的组成,左值和赋值,逻辑表达式的求值优化。

★★

[主要知识点]

1、赋值运算符的左边只能是变量;

2、其他类型数据参与逻辑运算时,非0即1;

3、逻辑表达式的优化:

逻辑运算时,逻辑表达式一但有确定的值将中止运算;

4、注意C++表达式与数学表达式的区别。

[试题]

[2006春]选择题22B

[2006春]填空题1

(1)1,1,1

[2004秋]若a1、a2、a3和a4都是整型变量,则以下选项中符合C++语法规则的表达式是。

A.a1=25%3.3B.a2=a1+a3=3*5C.a3=078D.a4=0Xa2

第二部分VisualC++的基本语句

一、顺序结构。

[考试要求]

(一)表达式语句,空语句和复合语句;

[主要知识点]

1、表达式语句:

由表达式加“;”组成。

2、空语句:

由单独的“;”组成。

3、复合语句:

通过一对“{…}”括起来的语句,在逻辑上是一个整体。

[考试要求]

(二)基本数据类型的输入和输出(cin和cout)。

★★

[主要知识点]

1、“cin>>”后面只能跟变量、字符数组和指向确定位置的字符型指针。

使用时注意:

(1)后面不能跟常量,如:

charc1,c2;cin>>c1>>‘\t’>>c2>>‘\n’;是错误的;

(2)可以输入字符型数组和字符型指针,其他类型数组和指针不允许输入;

(3)输入字符串时,空格字符是数据分隔符;

(4)若输入含空格的字符串,必须用cin.getline(数组名,大小)。

2、“cout<<”后面可以跟变量、常量、表达式(含有返回值的函数调用表达式)等。

使用时注意:

(1)控制输出格式;

(2)区别输出指针和指针所指值;

(3)输出字符型指针时,输出的是指针所指位置的字符串;而输出其他类型指针时,输出的是地址。

[试题]

[2007春]选择题24B

[2006秋]选择题27A

二、选择结构。

[考试要求]①单选条件语句和双选条件语句;★★★

[主要知识点]

1、格式:

(1)单选条件语句:

if(条件)S语句;

(2)双选条件语句:

if(条件)S1语句

elseS2语句;

2、使用时注意:

(1)if和if…else的嵌套;

(2)条件和S语句的从属关系,S语句可以是空语句、复合语句等;

(3)if和else的配对关系:

else总是与之前的同一个块中的尚未配对的if配对。

[考试要求]②switch语句。

★★

[主要知识点]

1、格式:

switch(条件表达式){

case常量表达式1:

语句组1;

case常量表达式2:

语句组2;

case常量表达式n:

语句组n;

default:

语句组n+1;

}

2、执行过程

3、使用时注意:

(1)条件表达式和常量表达式都只能是整型、字符型和枚举类型;

(2)条件表达式通常是变量表达式(含变量),常量表达式不能含变量;

(3)语句组中是否有break语句;

(4)default不是必须的。

[试题]

[2007春]选择题30D

[2007春]填空题1

(1)字符型

三、重复结构。

[考试要求]for语句、while语句和do…while语句。

★★★

[主要知识点]

1、格式

(1)for语句:

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

循环体(单语句、复合语句、循环语句);

(2)while语句:

while(条件表达式)

循环体;

(3)do…while语句:

do

循环体;

while(条件表达式);

2、执行过程

3、使用时注意:

(1)for中的所有表达式都可以省略,条件表达式(表达式2)省略时值为1;

(2)while语句和do…while语句的条件表达式不能省略;

(3)for语句和while语句是先判断循环条件,条件为1时再执行循环体;而do…while语句是先执行循环体后判断循环条件;

(4)循环前各变量的值是多少?

循环中各变量的值如何变化?

循环后各变量的值是多少?

循环了多少次?

[试题]

[2007春]选择题22A

[2006秋]选择题24D

[考试要求]四、break和continue语句。

★★★

[主要知识点]

1、break退出循环语句或switch语句。

2、continue语句是中止本次循环,立即进入下次循环。

第三部分构造类型和指针类型数据

一、构造类型数据[一维数组和二维数组,结构体和共同体(联合体)]。

[考试要求]

(一)构造类型变量的说明及初始化。

[主要知识点]

1、一维数组的说明及初始化。

★★★

(1)定义格式:

类型数组名[数组大小];

定义时注意,数组的必须大小确定。

①指定大小:

用字符型、枚举类型或整型的常量及常量表达式指定大小。

如:

inta=5;floatb[a],c[‘a’-90],d[];

其中数组c的定义是正确的,而b和d的定义是错误的,d[]只能出现在形参中。

下列数组的定义正确吗?

#definem5

constintn=10;

floatx[m],y[n],z[15.0];

②由初始化的数据确定大小。

当定义数组时,可以不指定其大小,而由其初始化时的数据确定其大小。

如:

inta[]={1,2,3};

(2)初始化

①一维数组初始化的方法:

用列表初始化。

②字符数组初始化的方法:

除了用列表(可以是整型数据或字符)初始化外,还可以用字符串初始化。

如:

charc1[]={97,98,99},c2[]={‘a’,‘b’,‘c’};

charc3[]=“abc”,c4[]={“abc”};

注意数组c1、c2、c3、c4的大小,c1和c2的大小为3,而c3和c4的大小为4。

③初始化时,注意元素个数不能大于数组大小。

如:

charc[5]=“china”;

是错误的。

2、二维数组的说明及初始化。

★★★

(1)定义格式:

类型数组名[数组行数][数组列数];

二维数组的行数和列数要求与一维数组大小相似。

对于二维数组,只能由元素个数确定其行,而不能由元素个数确定其列,如:

intb[][3]={1,2,3,4,5},c[3][]={1,2,3,4,5};

其中b的定义是正确的,而c的定义是错误的。

(2)初始化的方法

①用一维列表初始化,如:

inta[][3]={1,2,3,4,5};

②用二维列表初始化,如:

inta[][3]={{1,2},{3},4,5};

3、结构体和共同体(联合体)★

[试题]

[2007春]选择题27A

[2006春]选择题24D

[2006春]选择题29A

[2007秋]选择题23D

[考试要求]

(二)构造类型变量成员(元素)的使用。

★★★

[主要知识点]数组的使用:

面向元素。

1、一维数组:

通过单循环遍历数组,对元素进行操作,如:

inta[10]={1,2,3,4,5,6,7,8,9,10},s=0;

for(inti=0;i<10;i++)//求一维数组所有元素的和

s+=a[i];

for(i=0;i<10;i++)//按每行5个元素的方式输出

{

cout<

if((i+1)%5==0)cout<<‘\n’;

}

2、字符数组:

通过单循环遍历数组,以字符串结束标记作循环结束条件,如:

chars[]=“abcdef”;inti=0;

while(s[i]){

s[i]+=‘A’-‘a’;i++;

}

3、二维数组:

通过嵌套的双循环遍历数组,通常外循环控制行,内循环控制列,如:

floatb[4][5]={…};

for(inti=0;i<4;i++)//按矩阵方式输出

{

for(intj=0;j<5;j++)

cout<

cout<<<<‘\n’;

}

[试题]

[2007秋]填空题5(6)15(7)20

[2007秋]填空题9(14)1(15)6(16)1

二、指针与引用。

[考试要求]

(一)指针与地址的概念,取地址运算符&和取值运算符*;★★

[主要知识点]

1、地址:

内存单元的编号(变量保存位置)。

2、指针:

首地址。

3、取地址运算符&:

得到地址。

4、取值运算符*:

得到与地址对应的内存中的内容。

[考试要求]

(二)指针变量的定义、初始化;★★★

[主要知识点]

1、概念:

指针变量是保存某地址(指针)的变量。

2、定义与初始化

(1)一般指针变量(指向普通变量或数组元素)的定义格式:

类型*变量名;如:

intn=10,a[5]={1,2,3,4,5};

int*p1=&n,*p2=a,*p3=&a[3];

(2)指向一维数组的指针变量(二维数组的行指针)的定义格式:

类型(*变量名)[二维数组的列数];如:

inta[4][5]={1,2,3,4,5};

int(*p4)[5]=a,(*p5)[5]=a+1;

(3)指针数组(每个元素都是一个指针变量)的定义格式:

类型*变量名[元素个数];如:

int*p6[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

char*p7[4]={“123”,”45678”,”abcd”,”efgfijk”};

(4)二级指针变量(指向指针的指针)的定义格式:

类型**变量名;如:

int**p8=p6;

[考试要求](三)指针的运算;★★★

[主要知识点]

1、赋值运算:

对指针变量初始化,或改变指针所指的位置;如:

int*p9=p2,*p10;p10=p3;

2、算术运算(+、-)

(1)指针变量加(减)一个整数(n):

指针从当前位置向后(前)移动n个存储单元;

(2)指针变量相减:

两指针相差多少个存储单元;如p10-p9的值为3,而(int)p10-(int)p9的值为12;

(3)指针变量不允许相加,如p10+p9是错误的。

3、关系运算:

比较指针所指位置的前后关系,如p10>p9的值为1,而p10

4、指针变量的运算是改变指针所指的位置,而对指针变量所指值的运算是改变指针所指内存中的内容。

如:

char*p=“abcdefgh”;

p+=2;//p原来指向字符‘a’,运算后p指向字符‘c’

*p+=2;//把p所指的字符‘c’,修改为字符‘e’

[试题]

[2006春]填空题2

(2)age

[2006秋]填空题5(5)3

[考试要求](四)指针与数组★★★,指针与结构体,指针与函数★★,指针数组★,二级指针★;

[主要知识点]

1、指针与数组

(1)指针与一维数组和字符数组

①指针指向一维数组(指向数组的首元素)时,可用指针名代替数组名,如:

floatb[10],*p;

p=b;//p=&b[0];

b[i]可表示为:

p[i]、*(b+i)或*(p+i)。

②指针指向一维数组的某个元素时,指针名所代替的是从该元素开始的数组,如:

floatb[10],*p;

p=&b[j];//p=b+j;

p[i]所表示的是*(p+i),即b[i+j]、*(b+i+j)。

③指针名虽然可以代替数组名,但其本质是不同的,如:

char*p1=“abcd”,s[]=“12345”,*p2=s+2;

cout<

指针p1中存储的是字符串(“abcd”)的首地址(一个十六进制整数),p2中存储的是字符串(字符数组s)第3个元素(s[2])的地址;而字符数组中存储的是字符串本身(“12345”,数组的每个元素存放一个字符)。

另外,数组名(字符串)虽然也是一个地址,但是值不能被改变常量指针。

如:

int*p,a[5]={1},b[5];

p=a;p=b;p++;//正确

b=a;a=p;b=p;a++;//错误

④通过指针操作一维数组。

如把数组的前n(0

inta[10],*p1=a,*p2=a+10-n;

for(inti=0,t;i

{t=*p1;*p1=*p2;*p2=t;}

[试题]

[2006秋]填空题11(19)q=p=str(20)min>*p(21)p>str(22)p--

[2007秋]填空题6(8)a:

4(9)e:

3

(2)指针与二维数组

①用行指针指向二维数组时,可用指针名代替数组名,如:

floatb[3][6],(*p)[3];

p=b;//p=&b[0];

b[i][j]可表示为:

p[i][j]、*(*(p+i)+j)或*(p[i]+j)等。

②当把二维数组看成一维数组时,可用元素指针指向二维数组的首元素,操作二维数组,如:

floatb[3][6],*p;

p=&b[0][0];//p=*b;p=b[0];p=(int*)b;p=*(b+0);等

for(inti=0;i<3*6;i++)//通过元素指针输出二维数组

{

cout<

if((i+1)%3==0)cout<<‘\n’;

}

③虽然既可以用行指针操作二维数组,也可以用元素指针操作二维数组,但由于其含义不同,操作方法也不同。

如:

floatb[3][6],(*p1)[3]=b,*p2=b[0];

p1++;//p1自增后指到下一行(第二行)

p2++;//p2自增后指到下一个元素(第一行第二列)

[试题]

[2007春]选择题28B

[2006春]选择题25C

2、指针与函数

(1)指针作函数的参数,传递地址和数组,格式:

类型函数名(指针形参){…}。

①传递变量地址。

②传递一维数组。

[试题]

[2007秋]填空题12(23)i+=2(24)a[pn]=t(25)px!

=i+1(26)a[px]=t

[2006春]填空题8(11)3311(14)192000

[2006春]填空题13(23)i==n-1(24)*p>*(p+1)或*p>=*(p+1)(25)*p<*(p+1)或*p<=*(p+1)(26)test_order(x,n)

③传递二维数组。

[试题]

[2007春]填空题11(19)(int*p)[COL]或intp[ROW][COL](20)p[i][j-1]等(21)p[i][0](22)i=0;i

(2)函数返回指针。

函数类型为指针,格式:

类型*函数名(形参){…;return指针;}

①返回变量地址。

②返回数组名。

③返回指针变量。

[试题]

[2007秋]填空题8(12)4(13)33000

[2006秋]填空题9(15)HlloHowaryou(16)111111

(3)指向函数的指针。

先使指针指向函数,然后通过指针调用函数。

①定义指向函数的指针,要求类型和参数与所指向的函数一致,定义格式:

类型(*指针名)(形参);

②使指针指向函数,其格式为:

指针名=函数名;

③用指向函数的指针调用函数,其格式为:

(*指针名)(实参);或

指针名(实参

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

当前位置:首页 > 医药卫生 > 基础医学

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

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