《C++语言程序设计》自检自测二及答案 下载本文

内容发布更新时间 : 2024/5/7 12:17:49星期一 下面是文章的全部内容请认真阅读。

自检自测二及答案

一、单选题(每小题2分,共20分)

1.下列变量名中,( )是合法的。

A.CHINA B.byte-size C.double D.A+a 2.循环while(int i=0) i--;执行次数是( )。

A.0 B.1 C.5 D.无限

3.设void f1(int * m,long & n);int a;long b;则以下调用合法的是( )。

A.f1(a,b); B.f1(&a,b); C.f1(a,&b); D.f1(&a,&b); 4. 以下错误的描述是( )。

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

C. 被调用函数中,如果有返回值,就一定要有return语句 D. 被调用函数中,一个return语句可返回多个值给调用函数 5. 将两个字符串连接起来组成一个字符串时,选用( )函数。 A. strlen() B. strcap() C. strcat() D. strcmp() 6. 预处理命令在程序中都是以( )符号开头的。

A. * B. # C. & D. @

7. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。

A. int *p=new a[10]; B. int *p=new float[10]; C. int *p=new int[10]; D. int *p=new int[10]={1,2,3,4,5} 8. 下列给字符数组赋初值时,正确的是( )。

A. char s1[]=”abcdef”; B. char s2[4]=”abcd”; C.

char

s3[2][3]={“abc”,”xyz”};

D.

char

s4[4][]={‘a’,’x’,’s’,’t’};

9. 假定一条定义语句为“int a[10], x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。

A. x=pa[3]; B. x=*(a+3); C. x=a[3]; D. x=*pa+3;

10. 假定指针变量p定义为“int *p=new int[30];”,要释放p所指向的动态内存,应使用语句( )。

A. delete p; B. delete *p; C. delete &p; D. delete []p;

二、填空题(每小题2分,共30分)

1.C++目标程序经___________后生成扩展名为exe的可执行程序文件。

2.执行if (x>=0||x<=0) cout<<\;else cout<<\;屏幕上显示的是______________。 3. 在switch语句中,每个语句标号所含关键字case后面的表达式必须是整型_______。 4. 在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。 5. 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。

6. 当在程序中执行到________语句时,将结束本层循环类语句或switch语句的执行。 7. 元素类型为double的二维数组a[4][6]共占用________字节的存储空间。 8. 字符串”\\’a\\’xy=4\\n”的长度为________。

9. 一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。

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

11. 定义一个函数模板要用到的第一个修饰符是____________。 12. 在函数模板的参数中,用class修饰的参数称为__________参数。

13. 若有定义“struct AA {int a; char b; double c;}x;”,则x占用空间大小为________字节。

14. 假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为________。

三、给出下列程序运行后的输出结果(每小题5分,共20分)

1.#include void main(){

int a[10]={2,4,6,8,10,12,14,16,18,20}; for(int i=0;i<10;i++){ cout<

}

2. #include const int B=2; void main() {

int p=1,s=1;

while(s<50) {

p*=B; s+=p;

}

cout<<\

}

3. #include int f1(int x, int y) {

x=x+y; y=x+y;

cout<<\ return x+y;

}

void main() {

int x=5,y=8; int z=f1(x,y);

cout<<\ cout<<\

}

4. #include void main() {

char a[]=\

int i1=0, i2=0, i=0;

while(a[i]) {

if(a[i]==’a’) i1++; if(a[i]==’b’) i2++;

i++;

}

cout<

}

四、写出下列每个函数的功能(每小题5分,共20分)

1. void f2(double a[], int n) {

int i; double sum=0; for(i=0;i

for(i=0;i

if(a[i]>=sum) cout<

cout<

}

2.bool WB(int a[ ];int n,int x){

for(int i=0;i

}

3. char* f8(char* str1, const char* str2) {

int i=0,j=0; while(str1[i]) i++;

while(str2[j]) str1[i++]=str2[j++] ; str1[i]='\\0'; return str1; }

4. void f7(NODE* L) {

for(__NODE* p=L _; p!=NULL; _ p=p->next __)

cout<<__ p->data __ <<' ';

cout<

假定NODE的类型定义为: struct NODE {

int data; //结点值域 NODE * next; //结点指针域

};

IntNode* next; //结点指针域 };

五、编程题(10分)

1. 求出从键盘上输入的20个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。 答案

一、单选题(每小题2分,共20分)

1. A 2. A 3. B 4. D 5. C 6. B 7. C 8. A 9. D 10. D

二、填空题(每小题2分,共30分)

1. 连接 2.abcd 3. 常量(或常数) 4. if 5. 11 6. break 7. 192 8. 8 9. 10 19 10. 类型 11. template 12. 虚拟类型(或类型) 13. 13 14. 25

三、给出下列程序运行后的输出结果(每小题5分,共20分)

1. s=63

2.2 4 6 8

10 12 14 16 18 20

3. x=13, y=21

x=5, y=8, z=34

4. 4 3 14

四、写出下列每个函数的功能(每小题5分,共20分)

1.显示输出数组a[n]中大于等于平均值的所有元素值。

2.从数组a中顺序查找值为x的元素,若查找成功则返回真,否则返回假。

3.实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。

4.依次显示输出以L为表头指针的链表中各结点的值

五、编程题(10分)

1. #include //1分 void main() {

int x,max; //1分

cin>>x;

max=x; //2分

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

cin>>x;

if(x>max) max=x; //4分

}

cout<<\分 }