第一、二、三章自测题 一、选择题
(1)已知下列语句中的x和y都是int型变量,其中不正确的语句是 A)y+=++x; B)++x+=y; C)y=x++; D)x++=y; (2)若x是一个bool型变量,y是一个值为100的int型变量,则表达式 !x && y>0 的值[ ]。
A) 为true B) 为false C) 与x的值相同 D) 与x的值相反 (3)执行语句序列 int n; cin>>n; switch(n){ case 1:
case 2: cout<<'X'; case 3:
case 4: cout<<'Y'; break;
default:cout<<'Z'; }
时,不可能出现的情况是[ ]。
A)显示:X B)显示:Y C)显示:Z D)显示:XY (4)执行语句序列 int x; cin>>x;
if(x>250) cout<<'X';
if(x<250) cout<<'Y'; else cout<<'X';
时,不可能出现的情况是[ ]。
A) 显示:X B) 显示:Y C) 显示:XY D) 显示:XX 二、填空题
(1)执行 int x=2,y=7;y-=++x-2;后,x的值是____ ,y的值是 ____ 。 (2)执行 int x=9,y=-5;y+=x--+2;后,x的值是_____,y的值是______ 。 (3)与i=0;while(i<100) cout<0) cout< (1)要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是[ ]。 A) int vect[]={30,50,-88}; B) int vect[]={30,50,-88,0,0}; C) int vect[5]={30,50,-88}; D) int vect[5]={30,50,-88,0,0}; (2)已知某应用系统中已经定义了函数fun,其原形是 int fun(char='A'); 则下列函数中,可以在同一系统中加以重载的是[ ]。 A) int fun(); B) int fun(char); C) int fun(char,int); D) int fun(char,double=0.0); (3)若指针p定义为 const char *p=\"Luchy!\"; 则[ ]。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (4)已知数组A和指针p定义为:int A[20][10],*p;,要使p指向A的首元素,正确的赋值表达式是[ ]。 A) p=&A 或 p=A[0][0] B) p=A 或 p=&A[0][0] C) p=&A[0] 或 p=A[0][0] D) p=A[0] 或 p=&A[0][0] (5)已知函数func的原形是 double func(doouble *pd,int &ri); 变量x和y的定义是 double x; int y; 把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是[ ]。 A) func(x,&y); B) func(&x,y); C) func(&x,&y); D) func(x,y); (6)若变量p的定义为 int **p=new int *(new int[5]);,则释放所申请到的动态空间的语句应是: 。 (7)要使字符串变量str具有初值\"Lucky\",正确的定义语句是[ ]。 A) char str[]={'L','u','c','k','y'}; B) char str[5]={'L','u','c','k','y'}; C) char str []=\"Lucky\"; D) char str [5]=\"Lucky\"; (8)已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是[ ]。 A) int MAT[][10] B) int MAT[3][] C) int MAT[10][3] D) int MAT[][] (9)若指针p定义为 char * const p=\"Luchy!\"; 则[ ]。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (10)在下列表达式中,与下标引用A[i][j]不等效的是[ ]。 A) *(A+i+j) B) *(A[i]+j) C) *(*(A+i)+j) D) (*(A+i))[j] (11)要使语句p=new double[20];能够正常执行,变量p应定义为[ ]。 A) double p[20]; B) double p; C) double (*p)[20]; D) double *p; 二、填空题 (1)已知数组A是一个有25个单元的int型数组,下面的语句试图按相反的顺序显示这25个单元中的整数,请补充完整: for(int i=24; ; ) cout<< <<' '; (2)利用函数模板 template for(int i=0;i (7)已知数组A是一个有25个单元的int型数组,下面的语句序列试图求出这25个整数之和,并将结果显示在屏幕上,请补充完整: int s=0 for(int i=0; ; ) ; cout< for(int i=0;i<3;i++) cout< 由此可知,一维数组COLOR的定义是: 。 (11)已知指针变量pf的定义是:char *(*pf)(int)=ITOS;,则函数ITOS的原形是: 。 (12) 若变量p的定义为 int &p=*new int;,则释放所申请到的动态空间的语句应是: 。 三、程序分析题:读懂程序,描述程序的输出结果 (1) #include for(int i=0;i<8;i++) cout<(2) #include if(s!=i){ int x=data[i]; data[i]=data[s]; data[s]=x; } }} void main() { int a[]={21,12,53,74,25,16,7,38}; halfSort(a,3,8); for(int i=0;i<8;i++) cout<四、程序设计题 ⑴函数 void Min_Max(int data[],int size); 的参数data是一个具有size个元素的一维数组。Min_Max的功能是:调整存储于data中的整数序列的排列顺序,使得最小整数成为数组的第一个元素,最大整数成为数组的最后一个元素,其他整数应尽可能地保持在原来的位置上。例如,执行语句序列 int A[]={88,33,55,22,44,99,77,66}; #define SIZE (sizeof(A)/sizeof(A[0])) Min_Max(A,SIZE); for( int i=0;i ⑵函数 char *allTrim(char *str); 的功能是去除参数字符串str的前导空格和尾部空格(如果有的话),其返回值就是参数字符串str。例如,执行下面的语句序列 char s[]=\" ABCD XYZ \"; cout< 请实现函数allTrim。 第七、八、九章练习题 一、选择题 (1)执行下列语句序列 struct AA{ int ival; char cval;}; struct BB{ int ival; AA ra;}; struct CC{ int ival; AA ra; BB rb;}; CC rc={66,{rc.ival+1,rc.ra.ival+1},{69,{70,71}}}; cout< B) 仅当未定义无参构造函数时存在 C) 仅当未定义有参构造函数时存在 D) 仅当未定义任何构造函数时存在 (3)语句ofstream f(\"SALARY.DAT\| ios::binary); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而 且[ ]。 A) 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。 B) 若文件存在,将其截为空文件;若文件不存在,打开失败。 C) 若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。 D) 若文件存在,打开失败;若文件不存在,建立一个新文件。 (4) 执行下列语句序列 struct AA{ int ival; char cval;}; struct BB{ int ival; AA ra;}; struct CC{ int ival; AA *ra; BB rb;}; CC rc={66,new AA,{69,{70,71}}}; rc.ra->ival=rc.ival+1; rc.ra->cval=rc.ra->ival+1; cout< D) 仅当未定义任何构造函数时存在 (6)语句ofstream f(\"SALARY.DAT\| ios::trunc); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且[ ]。 A) 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。 B) 若文件存在,将其截为空文件;若文件不存在,打开失败。 C) 若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。 D) 若文件存在,打开失败;若文件不存在,建立一个新文件。 二、填空题 (1)请补充完整下面类说明中的拷贝构造函数: class MyClass{ int *p; int size; public: MyClass(int n):size(n),p(new int[size]){} ~MyClass(){delete []p;} MyClass( ):size(mc.size),p( ) {for(int i=0; ;i++) p[i]=mc.p[i]; } }; (2)请补充完整下面类说明中的拷贝构造函数: class MyClass{ int *p; int size; public: MyClass(int n):size(n),p(new int[size]){} ~MyClass(){delete []p;} MyClass(MyClass& mc):size( ),p(new int[size]) { for(int i=0;i cout<< _____________________< 请将下面程序补充完整: #include cout<<________________________ < int X , Y ; protected: int SetZero(int zeroX, int zeroY); private: int length, height; public: void Location(int initX, int initY); int GetX( ); int GetY( ); }; (2) #include template TYPE MAX(TYPE data[]){ //data中各元素都是正整数,函数的功能 //是返回其中的最大整数 TYPE s=0; for(int i=0;i int d[]={23,32,,67,45,56,12,78}; cout< (3) #include void showArray(int *a){//显示a[0]、a[1]、a[2]...直到遇见数据0为止 while(*a) cout<<*a++<<' '; } void main() { int d[]={1,2,3,4,5,6,0}; showArray(&d); } (4) 下面的程序试图颠倒数组中数据的排列顺序,因此应当显示输出:8 7 6 5 4 3 2 1,程序中有一处逻辑错误: #include int a[]={1,2,3,4,5,6,7,8}; rep(a,8);(8)若int DOUBLE(int n){ return n+n;}和long DOUBLE(long n){ return n+n;}是一个函数模板的两个实例,则该函数模板应定义为: (9)p1、p2都是字符指针,p1指向字符串\"GOOD_MORNING\",p2-p1的值为8,则执行cout<<*p2;时显示在屏幕上的是: 。 (10)已知执行语句cout<
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务