资源描述
第二部分 Visual C+程序设计一、选择题21下列数组定义中错误的是 (21) 。Aint a12=l; Bint a22=l,2;Cint a33; Dint a43;22以下选项中不能作为用户自定义标识符的是 (22) 。Aa_bc Ba+bc C_time DName23若有“char p=”AOBCODEFn”,则strlen(p+4)的值是 (23) 。A0 B1 C2 D4 24若有“char*p=Hello;”,则以下选项中错误的是 (24) 。Achar&a=*p; Bchar*s=*p; Cchar *q;p+2; Dp=p+2;25以下选项中没有this指针的函数是 (25) 。A内联成员函数 B构造函数 C静态成员函数 D析构函数26以下选项中正确的是 (26) 。A“char*a=china;”等价于“char*a;*a=”china;”B“char str10= child;”等价于“char str10;str=china;”C“char*s=china;”等价于“char*s;s=china;”D“char c4=abc,d4= abc;”等价于“char c4=d4= abc;”27若通过类的成员函数和友元函数所实现的运算符重载的功能是一样的,下列说法正确的是 (27) 。A这两种函数的参数相同,函数体实现过程不同B编译器对这两种函数编译时所作的解释相同C这两种函数都带有this指针D友元函数比成员函数多一个参数28以下选项中错误的是 (28) 。A派生类可以继承多个基类 B可以有多个派生类继承同一个基类C派生类可以有多个虚基类 D抽象类必须是虚基类29以下函数定义中能正确编译的是 (29) 。Adouble fun(int x,int y)double z;z=x+y;return z;Bdouble fun(int x,int y)z=x+y;return z;Cdouble fun(int x,int y)int x,y;double z;z=x+y;return z;Ddouble fun(int x,y)int z=x+y;return z;30若定义类CA:class CApublic: CA(int x=0);执行语句“CA a(4),b3,*p2;”,则自动调用该类的构造函数的次数为 (30) 。A6 B4 C3 D1二、填空题基本概念题(共5分)1执行以下语句: int a5=25,14,27,18,*p=a;(*p)+;则*p的值为 (1) ,再执行语句:*p+; 则*p的值为 (2) 。2在c+中,将多态性分为静态多态性和动态多态性两种。函数重载属于 (3) 多态性,虚函数属于 (4) 多态性。3当一个类只能作为派生类的基类,不能用来说明这种类的对象时,这种类称为 (5) 。阅读程序题(共13分)4以下程序输出的第一行是 (6) ,第二行是 (7) ,第三行是 (8) 。#includeint a=5:void main(void)int a=10,b=20; couta,bendl; int a=0; for(int i=1;i5;i+) a+=i;b+=a; couta,bendl;couta,bendl;5以下程序输出的第一行是 (9) ,第二行是 (10) 。#includeint f1(int n)n+=2; return n*n:int f2(int &n)n+=2; return n*n;void main(void) int m=5,n=3; m=f1(n); coutm,nendl; m=f2(n); coutm,nendl;6以下程序输出的四行分别是 (11) 、 (12) 、 (13) 和 (14) 。#includedouble f1(double x)return x+x;double f2(double(*f)(double x),int a)int x;double sum=0; for(x=a;x=a+1;x+) sum+=f(x)*f(x); return sum;void main(void)double sum;for(int i=1;i5;i+) sum=f2(f1,i); coutsumendl: 7以下程序输出的第一行至第三行分别是 (15) 、 (16) 和 (17) 。#include#includeclass Personpublic: Person(char*s)name=new charstrlen(s)+1;strcpy(name,s); virtual void print()cout”我的名字是”name”。n”;protected; char *name;class Student:public Personpublic: Student(char*s,float g):Person(s)gpa=g; void print(char*s) couts”我的名字是”name”,我的年薪是”gpa”万元。n”;private: float gpa;class Professor public Personpublic: Professor(char*s,int n):Person(s)pubis=n; void print()cout”我的姓名是”name”,我已出版了“ pubisprint();P=&y;P-print();P=&z;p-print();8以下程序输出的结果是 (18) 。#includevoid main(void)int a44=1,2,3,4,2,2,5,6,3,5,2,7,4,6,7,4;int i,j,flag=0; for(j=0;j4;j+) for(i=0;i=j,i+) if(aji=aij)continue; flag=1: if(flag)cout”No!”endl; else cout”All Right!”endl;完善程序题(共12分)9以下程序用筛选法求出2300之间的所有素数(质数)。程序在输出计算结果(素数)时,每一行输出10个数。算法说明:先将2,3,5,7,9,11,13,15,299放人数组num中。若numi(i=0,l,2,3,148)不为0,则对数组中在numi之后的每一个元素numj进行处理;若该元素是numi的倍数,则该元素不是素数并将该元素置为0。最后,数组num中不为0的元素均是素数。#includevoid prime( (19) )for(int i=0;in-1;i+) for(int j=i+1;jn;j+) if( (20) ) if(yj&yj%yi=0) (21) ;void main(void)int num150; numO=2; for(int i=1;i150;i+)numi=2*i+1; prime(num,150); int count=O; for(i=0;i150;i+) if(numi) count+: coutnumit; if( (22) )coutn; coutn: cout”求出的素数个数为:”count”n”;10以下程序实现一个由动态数组构成的线性表的类,在该类的线性表中存放若干个实数。通过重载赋值运算符实现两个线性表对应元素间的赋值,重载提取运算符完成线性表的输人,重载插入运算符完成线性表的输出。#includeclass List int size; double *list;public: List(int=1,double =00); List()deletelist; List &operator=(const Lis t&); friend ostream &operator(ostream&,List&); friend istream &operator(istream&,List&);;List:List(int sz,double t)size=sz;list= (23) ;for(int i=O;isize;i+)listi=t;List&List:operator=(const List &V) if(&v!=this) deletelist; size=vsize: list=new doublesize; for(int i=0;isize;i+) (24) ; return *this; (25) (ostream &os,List &v)int i;for(i=O:ivsize;i+) osv1isti,; if(i+1)%8=O)os(istremn &is,List &v)for(int i=0;ivsize;i+) coutiv1isti; return is;void main(void)List a(4),b(4); coutb; cout”b:”bendl; a=b;cout”a:”anext!=NULL) p1=p; p2=p-next; while(p2!=NULL) if( (27) )p1=p2; p2=p2-next; if(p!=p1)int t; t=p-data; p-data= (28) ; (29) =t; (30) ; return head;参考答案第一部分基础知识 (1)A (2)B (3)D (4)C (5)C (6)B (7)A (8)B (9)A (10)C (11)A (12)D (13)B (14)C (15)A (16)D (17)B (18)D (19)D(20)A第二部分Visual C+程序设计一、选择题 (21)D (22)B (23)A (24)B (25)C (26)C (27)D (28)D (29)A (30)B二、填空题 (1)26 (2)14 (3)静态 (4)动态 (5)抽象类 (6)10,20 (7)10,40 (8)10,40 (9)25,3 (10)25,5 (11)20 (12)52 (13)100 (14)164 (15)我的名字是张刚。 (16)我的名字是王强。 (17)我的姓名是李明,我已出版了5本教材。 (18)All Right! (19)int y,int n (20)yi或yi!=0 (21)yj=0 (22)count%10=0或!(count%10)或!(count%10!=0) (23)new doublesize或new doublesz (24)listi=v.listi (25)ostream& operator (26)istream& operator (27)p2-datadata (28)p1-data (29)p1-data (30)p=p-next
展开阅读全文