江苏省2008年秋计算机二级考试VC++试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

[2008秋]—、选择题(用答题卡答题,答案依次填在21~30答题号内21.以下关于逻辑运算的描述中,正确的是________。A.所有的逻辑运算都是双目运算,其优先级相同B.逻辑运算中存在双目运算和单目运算,其优先级相同C.所有的逻辑运算都是双目运算,其优先级各不相同D.逻辑运算中存在双目运算和单目运算,其优先级各不相同22.对于while和do…while循环语句,以下描述正确的是________。A.do…while语句中的循环体至少执行一次B.两个语句中循环体可能都不执行C.while语句中的循环体至少执行一次D.两个语句中的循环体至少执行一次23.以下说明语句中,不存在语法错误的是________。A.chars1[4]={“a”,”b”,”c”};B.chars2[4]={‘a’,’b’};C.chars3[]={‘Iamastudent’};D.chars4[14]={“Iamastudent”};24.设变量a,b,c为整型变量,以下选项中存在语法错误的是________。A.c=a+++b;B.c=a+b++;C.c=b++=c++;D.c=++a=b++;25.设有程序段:x=-1;if(a!=0){if(a0)x=1;}elsex=0;该程序段表示的数学函数关系是________。-1(a0)1(a0)A.x=0(a=0)Bx=-1(a=0)1(a0)0(a0)0(a0)-1(a0)C.x=-1(a=0)Dx=1(a=0)1(a0)0(a0)26.以下关于两个同类型指针变量的叙述中,在一定条件下,运算结果没有实际意义的是________。A.两个指针变量可以互相赋值B.两个指针变量进行比较运算C.两个指针变量进行减法运算D.两个指针变量进行加法运算27.下列有关构造函数的叙述中,正确的是________。A.类的构造函数不能重载B.任何一个类必定有构造函数C.可以定义没有构造函数的类D.任何一个类必定有一个缺省的构造函数28.C++中运算符重载可以改变________。A.运算符的优先级B.运算符的结合性C.运算符实现的功能D.运算符的操作数的个数29.以下关于基类指针和派生类指针的叙述中,不正确的是________。A.基类指针可以指向它的公有派生类的对象B.基类指针可以指向它的多次派生后的派生类的对象C.派生类的指针不能指向基类的对象D若基类指针指向派生类的对象,通过该基类指针可以访问派生类对象的所有成员30.以下关于友元函数的叙述中,正确的是________。A.友元函数不能访问类的私有成员B.友元函数破坏了类的封装性和隐藏性C.友元函数的使用与类的成员函数相同D.友元函数的实现必须在类的说明中定义二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)●基本概念题,共5分1.设有语句:inta=5,b=6,c;c=!a&&b++;执行以上语句后,变量b的值为_(1)。2.在定义派生类时,如果没有指定基类的派生(继承)方式,则缺省(默认)的继承方式是__(2)3.C++中编译预处理包括:文件包含、宏和__(3)。4.要将一个函数定义为内联函数时,通常在定义函数时使用关键字__(4)。5.C++中表达式:”Iamastudent”的值为该字符串的__(5)。●阅读程序题,共13分6.[程序](2分)#includeiostream.hvoidf(inta[]){intt=a[0];a[0]=a[1];a[1]=t;couta[0]’\t’a[1]’\n’;}voidmain(void){intb[2]={300,500};f(b);coutb[0]’\t’b[1]’\n’;}程序输出的第一行为_(6),第三行为_(7)7.[程序](2分)#includeiostream.hintfa(inta){staticintm=1;m=a*m;returnm;}voidmain(void){for(inti=2;i=4;i++)coutfa(i)’\n’;}程序输出的第一行为_(8),第三行为_(9)。8.[程序](2分)#includeiostream.hintf1(inta[3][3]){intsum=0;for(inti=0;i3;i++)for(intj=0;j3;j++){if(a[i][j]0)continue;sum+=a[i][j];}returnsum;}intf2(inta[3][3]){intsum=0;for(inti=0;i3;i++)for(intj=0;j3;j++){if(a[i][j]0)break;sum+=a[i][j];}returnsum;}voidmain(void){intb[3][3]={{1,2,3},{7,-12,-13},{-20,9,-5}};ints1,s2;s1=f1(b);s2=f2(b);couts1endl;couts2endl;}程序输出的第一行为_(10),第二行为_(11)_。9.[程序](3分)#includeiostream.hintf(intx[],intn){if(n==1)x[n]=3;elsex[n]=n+f(x,n-1);coutx[n]’\n’;returnx[n];}voidmain(void){intb[5]={3,4,5,6,0};f(b,3);for(inti=0;i5;i++)coutb[i]’\t’;coutendl;}程序输出的第一行是_(12),第二行是_(13),第三行是_(14)。10.[程序](2分)#includeiostream.hclassA{intx;public:A(inta){x=++a;}~A(){coutx’\n’;}intget(){returnx;}};classB:publicA{inty;public:B(intb):A(b){y=get()+b;}B():A(5){y=6;}~B(){couty’\n’;}};voidmain(void){Bb(5);}程序输出的第一行是(15),输出的第二行是(16)11.[程序](2分)#includeiostream.hclassA{intx;public:A(intx=0){this-x=x;}virtualvoidf(){coutxendl;}};classB:publicA{inty;public:B(intx,inty=1):A(x){this-y=y;}voidf(inta){coutyendl;}};voidmain(void){Aa1(10),*pa;Bb1(20,30);a1.f();pa=&a1;pa-f();pa=&b1;pa-f();}程序输出的第二行是(17),输出的第三行是(18)。●完善程序题,共12分12.以下程序的功能是:将两个字符串分别输入到s1和s2中,并使s2中的字符按升序排列(用函数sort()实现排序)。然后,依次从s1中取一个字符插入到s2中,并使s2中的字符保持升序。函数insert(char*p,charc)的功能是将字符c插入到p所指向的字符串中,使p所指向的字符串保持升序。函数merge(char*p1,char*p2)依次从p2所指向的字符串中取出一个字符,并插入到p1所指向的字符串中。[程序](4分)#includeiostream.h#includestring.hchar*sort(chars[]){intlen=strlen(s);for(inti=0;ilen-1;i++)for(intj=i+1;jlen;j++)if((19)){charc=s[i];s[i]=s[j];s[j]=c;}returns;}voidinsert(char*p,charc){char*p1=p;intlen=strlen(p);while(*p1c&&*p1!=0)p1++;char*p2=p+len;while(p2=p1){(20);p2--;}(21);}char*merge(char*p1,char*p2){while(*p2){(22);p2++;}returnp1;}voidmain(void){chars1[100],s2[200],c;cout”输入第一行字符串:”;cin.getline(s1,100);cout”输入第二行字符串:”;cin.getline(s2,100);couts1’\n’s2’\n’;sort(s2);merge(s2,s1);couts1’\n’s2’\n’;}13.以下程序中的功能是:通过重载运算符+、—、何=,分别实现一维数组(向量)的加法(对应元素相加)、减法(对应元素相减)和向量对象之间的赋值。例如,设a,b,c是类Arr的对象,a的成员x[]={1,1,1,1,1,1},b的成员x[]={2,2,2,2,2,2},执行:c=a+b后,c的成员x[]={3,3,3,3,3,3}.[程序](4分)#includeiostream.hclassArr{floatx[20];intsize;public:Arr(floata[],intn){for(inti=0;in;i++)x[i]=a[i];size=n;}Arr(){for(inti=0;i20;i++)x[i]=0;size=0;}Arroperator+(Arr);Arroperator-(Arr);Arr&operator=(Arr&);intGetArr(floaty[]){for(inti=0;isize;i++)y[i]=x[i];returnsize;}voidprint(){for(inti=0;isize;i++)coutx[i]’\t’cout’\n’”size=”size’\n’;}};ArrArr::operator+(Arra){Arrtem;for(inti=0;isize;i++)(23);tem.size=size;returntem;}ArrArr::operator–(Arra){Arrtem;for(inti=0;isize;i++)(24);tem.size=size;returntem;}Arr&Arr::operator=((25)){for(inti=0;ia.size;i++)x[i]=a.x[i];size=a,size;return(26);}voidmain(void){floatb1[6]={10,20,30,40,50,60};floatb2[6]={100,200,300,400,500,600},b3[6],b4[6];Arra1(b1,6),a2(b2,6),a3,a4;a3=a1+a2;a4=a2-a1;a3.print();a4.print();intn=a1.GetArr(b3);for(inti=0;in;i++)coutb3[i]’\t’;cout’\n’n’\n’;}14、下面程序的功能是:首先建立一条链表,顺序从链表中找到data为最大值的结点,从链表中删除该结点,并将其值返回,最终删除整个链表,同时得到按降序排序的数组x。其中,函数Insert(inta,node*head)的功能是:用参数a产生一个新结点,将其插入链首,并返回链首指针。DeleteMax(node*&head)的功能是:从head所指向的链表中找到data值为最大的结点,从链表中删除该结点并将其结点值返回。算法提示:当链表为空时,返回-1。在查找的过程中,始终让pmax指向当前data值为最大的结点,并让pmax1指向pmax的前一个结点。找到data值为最大的结点后,将其从链表中删除,并返回其data值。[程序](4分)#in

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功