选择题
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. 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;