《C++期末复习题一.doc》由会员分享,可在线阅读,更多相关《C++期末复习题一.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+语言程序设计 期末复习题一、单项选择题1下列符号中,不可以作为变量名的是d 。 A list_p_9 B. PA123 C ready D. for2由C+目标文件连接而成的可执行文件的缺省扩展名为b 。 A cpp B. exe C obj D. lik3在每个C+程序中都必须包含有这样一个函数,该函数的函数名为a 。A. main B. MAIN C. name D. functkion4设x和y均为bool量,则x&y为真的条件是a 。A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假5下列表达式中正确的是b 。 A (k+)+ B. k-j C k-/=5
2、D. (k+3)=56执行下面程序段的输出结果是b 。int x=4,y=-55;if (x0) if (x10) cout ”AA” else cout ”BB” else if (y-20) cout ”CC” else cout ”DD”;A. AA B. BB C. CC D. DD7下面四个程序段中,输出23个*号的程序段是c 。A. for (int i=1; i23; i+) cout =0; i-) cout 0) cout *; i-; D. int i=0; while (0=23) cout *; i+; 8在下面的一维数组定义中,哪一个有语法错误。c A. int a
3、=1,2,3 B. int a10=0 C. int a D. int a59假定a为一个整型数组名,则元素a4的字节地址为c 。A. a+4 B. a+8 C. a+16 D. a+3210要定义一个int型二维数组a,并使其各元素具有初值: 2 3 0 0 4 0 5 0 0 0 0 0则正确的定义语句是b 。Aint a=2,3,0,0,4,0,5,0,0,0,0,0; Bint a4= 2,3,0,0,4,0,5,0,0,0,0,0; Cint a34= 2,3,4,5; Dint a=2,3,0,0,4,0,5,0,0,0,0,0;11在下面的函数声明中,存在着语法错误的是d 。 A
4、. void BC(int a , int) B. void BD(int , int) C. void BE(int , int=5) D. int BF(int x ; int y)12、下面的哪个保留字不能作为函数的返回类型?c 。A. void B. int C. new D. long13已知 int f(int); 和 int g(int); 分别是函数f和g的原型。下列语句中,将函数f作为语句调用的有 。A. f(3)+g(3); B. p/=f(3); C. g(f(3); D. f(g(3);14已知一函数的形参说明为 int arr56,在下列说明中,与此等效的形参说明为d
5、 。A. int arr B. int 5 C. int *a6 D. int (* a)615已知函数f的原型是:int f(char a,char * b=NULL,double c=0.0); 则下列调用中,不能正确地调用f函数的是 。 A. f(99) B. f(A,4.5) C. f(A,”123”) D. f(char)65,”123”)16已知一函数的原型是:int f(int ,int =0,double =0.0);则下列函数中可以加以重载的是 。 A. int f(int); B. int f(int,int); C. f(int,int,double); D. f(int
6、 double);17已知一函数中有下列变量定义,其中属于静态变量的是 。 Aint a=5; B. static double b; C. register char c; D. auto short d;18已知一个运行正常的的程序中有下面两个语句:int *p1, *p2=&a;p1=b; 由此可知,变量a和b的类型分别是 。 A. int 和 int B. int * 和 int C. int * 和 int D. int * 和 int *19假设p是一指针变量,下列表达式中正确的是 。 A. +p+ B. (+p)+ C. +(p+) D. p+-=320设有程序段如下:int k
7、;int A10; 则下列表达式中,与元素Ak等效的是 。 A. A+k B. *A+k C. *(A+k) D. A+ *k21设有数组定义 int a34=1,2,3,4,5,6,7,8,9,10,11,12; 则表达式 *(*(a+2)+1) 的值是 。 A. 5 B. 6 C. 9 D. 1022要使语句: p=new int10; 能够正常执行,p应定义为: A. int p; B. int p10; C. int *p; D. int (*p)10;23已知函数f的原型为: void f(int &a,char *b);变量s,t的定义是:int s; char t=”ABCD”;
8、把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是: 。 A. f(&s,&t); B. f(&s,t); C. f(s,t); D. f(s,&t);24设有如下定义 struct Person char * name; char * sex; int age; float pay; p=“李小莉”,”女”,23,370;则下列语句中正确的是 。A. cout (*p).nameendl B. cout nameendl (*p).sexendl sexendl (*p).ageendl ageendl (*p).payendl; payendl;C. cout pnameen
9、dl D. cout p.nameendl psexendl p.sexendl pageendl p.ageendl ppayendl; p.payendl;25设有定义如下: union ABC char ch; int ia; int * ipa; double db; ;则表达式 sizeof(ABC) 的值是 。A. 17 B. 8 C. 4 D. 126. 假定AB为一个类,则该类的拷贝构造函数的声明语句为 。 A AB &(AB x) B. AB(AB x) C AB(AB &) D. AB(AB * x)27对于结构中定义的成员,其隐含访问权限为 。 A public B. p
10、rotected C private D. static28当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 。 A ios:in B. ios:out C ios:int | ios:out D. 没有29假定AB为一个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为 。A. 3 B. 4 C. 6 D. 930假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: 。A. AB operator+(AB & a , AB & b) B. AB operator
11、+(AB & a)C. operator+(AB a) D. AB & operator+( )二、填空题1执行“cout 43-18=43-18endl;”语句后得到的输出结果为43-18=25 。2已知AZ的ASCII码为6590,当执行“char ch=14*5+2; cout chy和x=y的逻辑值分别为0 和1 。6C+语言中的每条基本语句以; 作为结束符,每条复合语句以 作为结束符。7执行“cout char(A+2)5的相反表达式为x+yy) 。11表达式: x=625,i=(x100?10:100) 的值是10 。12执行 int x=4,y; y=x-+3; 语句后,变量 x
12、的值是3 ,y的值是7 。13执行程序段int x=5,y=10;x+=y; y=x-y; x-=y; 后变量 x的值是10 ,y的值是5 。14与赋值语句: y=OK?(READY?-1:0):1; 等效的嵌套的if语句为:if(y=OK)if(READY)-1;else0;else 1; 。15执行语句 i=10; do cout *; i-; while (i+3); 后,将显示出13 个*号。16设有下面的定义int s10=1,2,3,4,5,6,7,8,9,10;int sum=0;请完善下面的语句实现求数组s的所有元素之和,并保存在变量sum中:for( intj=0; j0)
13、cout str1endl;else cout str2endl; 后的输出结果是XYZxyz 。19执行“typedef int ABC10;”语句把ABC定义为具有10个整型元素的 。20假定一个二维数组为aMN,则ai的地址值(以字节为单位)为a+i 。21已知函数f的定义是:int f(int n) n *= 2; return n+1; 则执行 int m=5, n=3; m=f(n);后,变量m的值是7 ,n的值是3 。22如果在一函数定义中使用static 修饰符,则声明该函数不允许其它程序文件中的函数调用。23已知一函数模板定义为 template Type incre(Typ
14、e n) return n+1; 则函数调用 incre(5.0) 使用得该函数模板产生的实例化函数为: 24已知文件 fileA.cpp 中的一些函数需要访问在另一个文件 fileB.cpp中定义的全局整型变量 var ,则在文件fileA.cpp的首部对变量 var应声明为extern 。25变量分为全局和局部两种, 变量没有赋初值时,其值是不确定的。26假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)+;”语句后,p所指对象的值为26 。27假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为*(p-b) 。28假定一个一维数组的定义为“char *
15、 a8 ;”,则该数组所含元素的个数为8 ,所占存储空间的字节数为 。29假定a是一个二维数组,则aij的指针访问方式为*(*(a+i)+j) 。30设px是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用该类的析构函数 。31若需要把一个函数“void F( );”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:friend void F(); 。32若要在程序文件中进行标准输入输出操作,则必须在开始的 # include 命令中使用 头文件。33假定一个结构类型定义为“struct D int a ; union int b ; double c
16、 ; ; D * d2 ; ;” ,则该类型的大小为 字节。34对一个类中的数据成员的初始化可以通过构造函数中的函数体 实现,也可以通过构造函数中的初始化器 实现。35假定AB为一个类,则执行“AB a10;”语句时,系统自动调用该类的构造函数的次数为10 。 36假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 。37请完成下面的一个类的定义:class ABC private: int a,b; public: ABC(int aa, int bb=5) a =aa; / 将 aa 的值赋给 a b=bb; / 将 bb 的值赋给 b int fA()
17、 ;int fB() ;int ABC:fA( ) return a+b; int ABC:fB( ) return a*b; 三、下列程序运行后的输出结果1 # include void main() int s=0; for (int i=1; ; i+) if (s50) break; if (i%2=0) s+=i; cout i,s=i,sendl; i,s=15,562 # include int a=5;void main() int a=10,b=20; cout a bendl; int a=0,b=0; for (int i=1; i6; i+) a+=i; b+=a; c
18、out a b :aendl; cout a bendl;10 20 15 35 5 10 203 # include void SB(char ch) switch(ch) case A: case a: cout well!; break; case B: case b: cout good!; break; case C: case c: cout pass!; break; default: cout nad!; break; void main() char a1=b,a2=C,a3=f; SB(a1);SB(a2);SB(a3);SB(A); cout endl;good!pass
19、!nad!well!4 # include void main() char a=abcdabcabfgacd; int i1=0,i2=0,i=0; while (ai) if (ai=a) i1+; if (ai=b) i2+; i+; cout i1 i2endl;4 35 # include void main() int a9=2,4,6,8,10,12,14,16,18; for (int i=0; i9; i+) cout setw(5)*(a+i); if (i+1)%3=0) cout endl;2 4 68 10 1214 16 186 # include void LE(
20、int * a,int * b) int x=*a; *a=*b; *b=x; cout *a *bendl;void main() int x=10,y=25; LE(&x,&y); cout x yendl;25 1025 107 # include # include void main() char*a5=student,worker,cadre,soldier,peasant; char *p1,*p2; p1=p2=a0; for (int i=0; i0) p1=ai; if (strcmp(ai,p2)0) p2=ai; cout p1 p2endl;worker cadre8
21、 # include int LB(int *a,int n) int s=1; for (int i=0; in; i+) s*=*a+; return s;void main() int a=1,2,3,4,5,6,7,8; int b=LB(a,5)+LB(&a3,3); cout b=bendl;b=2409 # include class A int a,b;public : A() a=b=0; A(int aa,int bb) a=aa; b=bb; cout a bendl; ;void main() A x,y(2,3),z(4,5);2 34 510 # include t
22、emplate class FF TT a1,a2,a3;public : FF(TT b1,TT b2,TT b3) a1=b1; a2=b2; a3=b3; TT Sum() return a1+a2+a3; ;void main() FF x(2,3,4),y(5,7,9); cout x.Sum() y.Sum()endl;11 # include # include struct Worker char name15; / 姓名 int age; / 年龄 float pay; / 工资;void main() Worker x; char *t=liouting; int d=38
23、; float f=493; strcpy(x.name,t); x.age=d; x.pay=f; cout x.name x.age x.payendl;12 # include class A int a;public: A(int aa=0) a=aa; A() cout Destructor A!aendl; ;class B:public A int b;public: B(int aa=0,int bb=0):A(aa) b=bb; B() cout Destructor B!bendl; ;void main() B x(5),y(6,7); / 后定义的变量将先被释放Dest
24、ructor B!7 Destructor A!6 Destructor B!0 Destructor A!5四、写出下列每个函数的功能1 # include int SA(int a,int b) if (ab) return 1; else if (a=b) return 0; else return -1;比较两个整数的大小,让后返回相应的数字。2 float FI(int n) / n为大于等于1的整数 float x,y=0; do cin x; n-; y+=x*x; while (n0); return y;用于计算x1的平方加x2的平方,一直加到xn的平方。 3double S
25、F(double x,int n) / n为大于等于0的整数 double p=1,s=1; for (int i=1; ix; while (x!=-1) n+; y+=x; cin x; if (n=0) return y; else return y/n;求用户输入的所有数的平均数。5 # include void WA(int a,int n) for (int i=0; in-1; i+) int k=i; for (int j=i+1; jn; j+) if (ajak) k=j; int x=ai; ai=ak; ak=x; 按照从小到大排列一组数的前N个数。6 template
26、 void WE(Type a,Type b,int n) for (int i=0; if-name; StrNode * p=f; while (-n) p=p-next=new StrNode; cin p-name; p-next=NULL;8 # include # include void JB(char * fname) / 可把以fname所指字符串作为文件标识符的文件称为fname文件 / 假定该文件中保存着一批字符串,每个字符串的长度均小于20 ifstream fin(fname); char a20; int i=0; while (fina) cout aendl;
27、i+; fin.close(); cout i=iendl;五、编写程序1求三个整数的最大值。#include using namespace std;int main()int a3;cout请输入三个整数:endl;for(int i=0;iai;int hold=a0;for(int j=0;jhold)hold=aj;cout最大的为:holdendl;return 0;2从键盘输入10个正整数据并累加求和。#include using namespace std;int main()int a10,sum=0;cout请输入十个正整数:endl;for(int i=0;iai; for(int j=0;j10;j+)sum+=aj;cout和为:sumendl;return 0;3求多项式 1!+2!+3!+15!的值。#include using namespace std;int main()int sum = 0;cout该式的值是:endl;for(int i=0;i15;i+) int product=1;for(int j=1;j=i+
限制150内