搜档网
当前位置:搜档网 › 复习vc

复习vc

复习vc
复习vc

选择题

1.以下叙述正确的是__________。

A.在C++程序中,main函数必须位于程序的最前面

B.C++程序的每行中只能写一条语句

C.C++语言本身没有输入输出语句

D.在对一个C++程序进行编译的过程中,可发现注释中的拼写错误

2.下面关于注解的叙述中,不正确的是__________。

A.在C++程序中,只能从一行的开始位置插入注解信息

B.在C++中,只有两种插入注解信息的方法

C.可以用“/*”和“*/”包括多行注解信息

D.用“//”表示从此开始到本行结束为注解信息

3.以下语句的输出结果是________

char c1=100, c2=c1+1; cout<

A.100 B.101 C.一个字符 D.出错

4.以下语句的输出结果是________

char c1=100, c2=c1+1; cout<

A.100 B.101 C.一个字符 D.出错

5.以下语句的输出结果是______

int a=7,b; float x=5.4;

char c=(’D’+’a’)-‘A’;

b=x+a%3+x/2; cout<

A.8 D B.9 D C.9 d D.8 d

6.设a、b、c的值分别为0、18、17,执行下列语句后,b、c的值分别为_____

x=a+b>c && c++; y=a||b++||c++;

A.19 18 B.18 17 C.18 18 D.18 19

7.设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )

A. 12

B. 144

C. 156

D. 288

8.有变量定义int a,b,c;且a=3,b=4,c=5,则下列表达式中,值为0的表达式是()

A. 'A'&&'B'

B. a<=b

C. c>=b||b+c&&b-c

D. a<=b+c&&c>=a+b

9.下列的符号常量定义中,错误的定义是()

A. const M=10;

B. const int M=20;

C. const char ch;

D. const bool mark=true;

10.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符

A. 空格或逗号

B. 逗号或回车

C. 逗号或分号

D. 空格或回车

11.switch语句能够改写为()语句

A. for

B. if

C. do

D. while

12.在下面循环语句中循环体执行的次数为()

int i=0,s=0; while(s<20) {i++; s+=i;}

A. 4

B. 5

C. 6

D. 7

13.下列关于break和continue语句的叙述中,正确的是()

A.它们都可以用在循环语句和开关语句(switch)中

B.在循环体中break语句的作用是结束本次循环

C.在循环体中continue语句的作用是结束循环

D.在循环体中break语句的作用是结束循环

14.以下语句的输出结果是______

int a=7,b; float x=5.4;

char c=(’D’+’a’)-‘A’;

b=x+a%3+x/2;

cout<

A.8 D B.9 D C.9 d D.8 d

15.设a、b、c的值分别为0、18、17,执行下列语句后,b、c的值分别为_____

x=a+b>c && c++; y=a||b++||c++;

A.19 18 B.18 17 C.18 18 D.18 19

16.设有语句“char s[]=”abc\0endl”; int m=sizeof(s),n=strlen(s);”

则m、n的值为______。

A.8 4 B.9 4 C.9 3 D.8 3

17.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用______符号作为分隔 A.空格或逗号 B.逗号或回车 C.逗号或分号 D.空格或回车

18.设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是( )

A.15 B.26,15 C.15,26 D.26

19.为了避免嵌套的条件语句的二义性,C++语言规定else与________配对

A.编辑时在同一列的if B.其之前最近的还没有配对过的if

C.其之后最近的if D.同一行上的if

20.下列关于break和continue语句的叙述中,正确的是_____

A.它们都可以用在循环语句和开关语句(switch)中

B.在循环体中break语句的作用是结束本次循环

C.在循环体中continue语句的作用是结束循环

D.在循环体中break语句的作用是结束循环

21.已知三个变量a、b、c的值,下面______语句不能求出它们的最大值

A. max=(a>=b?a:b)=b?a:b)

B. if(a>=b) t=a; else t=b;

if(t

C. max=(t=a>=b?a:b)

D. if(a>b) {t=a; a=b; b=t;}

if(b

22.循环语句“for(int x=0, y=0; y!=100&&x<10; ) x++;”,执行的循环次数是_______

A.无限次 B.10次 C.11次 D.100次

23.在C++语言程序中,若对函数类型未加显式说明,则函数的隐含类型为_______

A.void B.double C.int D.char

24.有关函数重载的正确说法是_________

A.函数名不同,但参数的个数和类型相同

B.函数名相同,但参数的个数不同或参数的类型不同

C.函数名相同,参数的个数和类型相同

D.函数名相同,函数的返回值不同,而与函数的参数和类型无关

25.下面函数的功能是__________

void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }

A.字符串比较B.字符串复制 C.字符串连接 D.字符串反向

26.在C++语言程序中,当调用函数时,_________

A.实参和形参各占一个独立的存储单元

B.实参和形参可以共用存储单元

C.可以由用户指定是否共用存储单元

D.由计算机系统自动确定是否共用存储单元

27.下面对静态数据成员的描述中,正确的是______

A.它可以在类体内进行定义性说明

B.它不能被类的对象调用

C.它可以直接用类名调用

D.它不能受private控制符的作用

28.已知宏定义:

#define N 3

#define Y(n) ((N+1)*n)

执行语句z=2*(N+Y(5+1)); 后,变量z的值是______

A. 42

B. 48

C. 52

D. 出错

29.已知int a[3][2]={3,2,1}; 则表达式“a[0][0]/a[0][1]/a[0][2]”的值是______

A.0.166667 B.1 C.0 D.错误的表达式

30.若用数组名作为函数调用时的实参,则实际上传递给形参的是_______

A.数组首地址 B.数组的第一个元素值

C.数组中全部元素的值 D.数组元素的个数

31.有类型说明“enum week {Mon,Tues,Wnd=3,Thurs,Fri,Sat,Sun};”,则执行语句

“cout<

A. 5

B. 6

C. 4

D. 2

32.若有说明:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为________

A.p1=&ch; cin >> *p1; B.p2=new char; cin >> *p2;

C.cin.get(*p3); D.p4=&ch; cin.get(*p4);

33.若有以下说明和语句,则________是对数组元素的错误引用

int a[]={1,2,3,4,5,6,7,8,9,0},*p=a,i=2;

A. *(a+i)

B. a[p-a]

C. p+i

D. *(&a[i])

34.在以下说明中,标识符ptr______

int (*ptr)[3];

A. 说明不合法

B. 是一个指针数组名,每个元素是一个指向整数变量的指针

C. 是一个指针,它指向一个具有三个整型元素的一维数组

D. 是一个指向整型变量的指针

35.在下面循环语句中内层循环体S语句的执行总次数为()

for(int i=0; i

for(int j=i; j

A. n2

B. (n+1)/2

C. n(n-1)/2

D. n(n+1)/2

36.下面有关函数重载的说法中,不正确的是()

A.函数的重载是指完成不同功能的函数可以具有相同的函数名

B.函数的重载体现了C++语言的多态性

C.区别同名函数的唯一特征是参数列表

D.函数的重载可以通过函数返回值的类型,形参的类型、个数来实现

37.在一个被调用函数中,关于return语句使用的描述,()是错误的

A. 被调用函数中可以不用return语句

B. 被调用函数中可以使用多个return语句

C. 被调用函数中,如果有返回值,就一定要有return语句

D. 被调用函数中,一个return语句可以返回多个值给调用函数

38.下面有关静态成员的说法,不正确的是()

A. 程序在编译时,在遇到静态数据成员的定义性说明时为其分配内存空间;

B.在类定义中,声明静态数据成员时,不能进行初始化,只能在类定义的外部进行初始化;

C.类的所有对象都共享静态成员的内存空间;

D.静态成员函数不可访问类的非静态数据成员。

39.设有宏定义“#define T(x,y) (x)<(y)?(x):y”,执行语句“int m=10*T(3,4-2);

cout<

A.38 B.2 C.20 D.3

40.设有说明语句“int A[3][3]={{1,2},{3 ,4},{5,6}}”,则A[0][2]和A[2][1]的

初始化值分别为()

A.3 6 B.0 6 C.3 5 D.0 5

41.在下面的字符数组定义中,哪一个有语法错误。()

A. char a[20]=”abcdefg”;

B. char a[]=”x+y=55.”;

C. char a[15];

D. char a[10]=’5’;

42.有类型说明“enum week {Mon,Tues,Wnd=3,Thurs,Fri,Sat,Sun};”,则执行语句“cout<

A. 5

B. 4

C. 6

D. 2

43.若有说明:int a[4][10];则()是对数组元素a[i][j]的错误引用(此处0<=i<4,0<=j<10)

A.*(&a[0][0]+10*i+j)

B.*(a+i)[j]

C.*(*(a+i)+j)

D.*(a[i]+j)

44.设有以下说明语句:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p=a[0];

能够正确表示数组元素a[1][2]的表达式是_______。

A.*((*prt+1)[2])

B.*(*(p+5))

C.(*prt+1)+2

D.*(*(a+1)+2)

45.下面关于类的描述中,_____不能称为抽象类。

A.构造函数的访问权限定义为保护类型的类

B.析构函数的访问权限定义为保护类型的类

C.含有虚函数的类

D.构造函数和析构函数的访问权限都定义为保护类型的类

46.______不是构造函数的特征

A.构造函数的函数名与类名相同

B.构造函数可以重载

C.构造函数可以设置缺省参数

D.构造函数必须指定返回值类型

47.以下程序的输出结果是()

#include

void main(void)

{ int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;

for(i=0;i<4;i++) p[i]=&a[i*3];

cout << p[3][2] << endl;

}

A. 输出项不合法,输出结果不定

B. 6

C. 8

D.12

48.若有以下说明,则()不是对strcpy库函数的正确调用

char *str1="copy",str2[10],*str3="hijklmn",*str4,*str5="abcd";

A. strcpy(str2,str1);

B. strcpy(str3,str1);

C. strcpy(str4,str1);

D. strcpy(str5,str1);

49.设有语句“int i=3,j=4,k; const int *pint=&i; int *const pn=&j; ”;则下面()

不能正确执行

A.pint=&j; B.i=30; C.pn=&k; D.*pn=20;

50.关于new运算符的下列描述中,()是错的

A. 它可以用来动态创建对象和对象数组

B. 使用它创建的对象和对象数组可以使用运算符delete删除

C. 使用它创建对象时要调用构造函数

D. 使用它创建对象数组时必须指定初始值

填空题

1. 在if语句中,每个else关键字与它前面同层次并且最接近的___ __关键字相配套。

2. 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行__ __次后正常结束。

3. 元素类型为double的二维数组a[4][6]共占用__ __字节的存储空间。

4.假定a是一个一维指针数组,则a+i所指对象的地址比a大字节。

5. 若p指向x,则与x的表示是等价的。

6. 假定p为指向二维数组int d[4][6]的指针,则p的类型为。

7. 若y是x的引用,则对y的操作就是对的操作。

8. 表达式sqrt(81)和pow(6,3)的值分别为______ _____。

9.当使用保留字作为函数类型时,该函数不返回任何值。

10. 类中的供外部调用定义的函数成员,其访问属性通常被定义为。

11. 假定AA是一个类,“AA* abc();”是该类中一个成员函数的原型,则在类外定义时的函数头为。

12. 对象将其大部分实现细节隐藏起来,这种机制称为_____ ___。

13. 重载一个函数的条件是:该函数必须在参数的个数或参数的____ __上与其它同名函数有所不同。

14. 如果一个函数直接或间接地调用自身,这样的调用称为__ _调用。

15. 若二维数组a有m列,设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]在数组中位置序号的公式为___ ____。

完善程序:

1. 采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出。 #include

const int N=8;

void main()

{

int a[N],*p,*q;

for(p=a; p

p=a;q=a+N-1;

while(p

int r=*p; *p=*q; *q=r;

___ ___; ___ ___;

}

for(p=a;p

cout<<*p<<' ';

cout<

}

2. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。

#include

void main() {

int f,f1,f2,i;

cout<<”斐波那契数列:\n”;

f1=0; f2=1;

cout<

for(i=3;i<=20;i++) {

f=______ ____;

cout<

if(_____ ____) cout<

f1=f2;

f2=____ _____;

}

cout<

}

3. 用插入排序方法对table指针数组中size个指针所指向的字符串进行按升序排序的算法。

void sort(char *table[], int size){

for(int i=1,___ __; i++){

char *p=table[i];

for(int j=i-1; j>=0 ; j--)

if(strcmp(p,table[j])<0) ___ ___;

else break;

table[j+1]=__ __;

}

}

4. 已知一个类的定义如下:

#include

class AA {

int a[10];

int n;

public:

void SetA(int aa[], int nn); //用数组aa初始化数据成员a, //用nn初始化数据成员n

int MaxA(); //从数组a中前n个元素中查找最大值

void SortA(); //采用选择排序的方法对数组a中前n个元素

//进行从小到大排序

void PrintA(); //依次输出数组a中的前n个元素,

//最后输出一个换行

};

使用该类的主函数如下:

void main()

{

int a[10]={23,78,46,55,62,76,90,25,38,42};

__ __;

x.SetA(a,8);

int ___ ___;

___ ___;

x.PrintA();

cout<

}

该程序运行结果为:

23 25 46 55 62 76 78 90

90

读程序写结果:

1. #include

void main() {

int a[10]={76,83,54,62,40,75,90,92,77,84};

int b[4]={60,70,90,101};

int c[4]={0};

for(int i=0;i<10;i++) {

int j=0;

while(a[i]>=b[j]) j++;

c[j]++;

}

for(i=0;i<4;i++) cout<

cout<

}

程序运行结果为:

2. #include

const int N=5;

void fun();

void main()

{

for(int i=1; i

fun();

}

void fun()

{

static int a;

int b=2;

cout<<(a+=3,a+b)<<' ';

}

程序运行结果为:

3. #include

const int T=6;

void main()

{

int i,j;

for(i=1;i<=T;i+=2)

for(j=2;j<=T;j+=2) {

if(i+j

else cout<<’*’;

}

}

4. #include

void main()

{

int x=24,y=88;

do {

while(x%i==0 && y%i==0) {

p*=i;

x/=i;

y/=i;

}

i++;

}while(x>=i && y>=i);

cout<

}

5. #include

const int N=3;

void main()

{

int a[N][N]={{7,-5,3},{2,8,-6},{1,-4,-2}};

int b[N][N]={{3,6,-9},{2,-8,3},{5,-2,-7}};

int i,j,c[N][N];

for(i=0;i

for(j=0;j

c[i][j]=a[i][j]+b[i][j];

for(i=0;i

for(j=0;j

cout<

cout<

}

}

6. #include

void f2(int& x, int& y)

{

int z=x; x=y; y=z;

}

void f3(int* x, int* y)

{

int z=*x; *x=*y; *y=z;

}

void main()

{

cout<<"x,y="<

f2(x,y);

cout<<"x,y="<

f3(&x,&y);

cout<<"x,y="<

x++; y--;

f2(y,x);

cout<<"x,y="<

}

编程题

1.编程实现求出3位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如153就是水仙花数:153=13+53+33

要求:判断一个数是否为水仙花数必须用函数int f(int n)实现,如果是水仙花数返回1,否则返回0。

2.输入一个二维数组A[5][5]。设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值、最大元素值和最小元素值,并输出。

3. 类Equat用来描述求一元二次方程ax2+bx+c=0的根。

#include

#include

class Equat {

double a,b,c; //一元二次方程的三个系数

int Delta( ); //b2-4ac>=0时返回1,否则返回0

public:

Equat(double da=1,double db=2,double dc=1);

void ShowRoot( ); //计算并显示方程的根

};

试完成类中成员函数的定义,并定义该类的对象求方程x2+2x+2=0的根。

4、输入三个字符串,按降序排序后输出。

要求:字符串交换必须用自定义函数strswap(char a[],char b[])实现

5..定义一个描述点的类P,含有描述点坐标位置的私有变量a、b;利用构造函数为点赋初值,利用成员函数计算两点间的距离。

相关主题