自检自测二及答案
一、单选题(每小题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
int a[10]={2,4,6,8,10,12,14,16,18,20}; for(int i=0;i<10;i++){ cout< } 2. #include int p=1,s=1; while(s<50) { p*=B; s+=p; } cout<<\ } 3. #include 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 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 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<<\分 }