您好,欢迎访问三七文档
山东省远大网络多媒体股份有限公司c++笔试题1C++笔试题一、选择题(共30分,每题2)1.求abc\\12\n字符串的长度(C)。A.5B.6C.7D.82.在C++中,char类型数据在内存中的存储形式是(D)。A.原码B.反码C.补码D.ASCII码3.设有变量定义inti,j;与表达式i==0&&j==0等价的表达式是(B)A.i||jB.!i&&!jC.!i==!jD.i==j4.设变量inta=5;下列哪个表达式计算机后,使得变量b的值等于2?(A)。A.b=a/2B.b=6-(a--)C.b=a%2D.b=a3?3:25.设变量x,y,a,b,c,d的值为1,计算表达式(x=a!=b)&&(y=c!=d)后,变量x,y的值分别是(B)。A.0,0B.0,1C.1,0D.1,16.C++中循环语句while和do……while的主要区别是(A)。A.do……while的循环体至少无条件执行一次B.while的循环控制条件和do……while的循环控制条件的控制方式是相反的C.do……while允许从外部转到循环体内,while不允许D.while的循环体不能复合语句7.下面关于C++字符数组的叙述中,错误的是(D)A.字符数组可以放字符串B.字符数组的字符可以整体输入、输出C.可以在赋值语句中通过赋值运算符对字符数组整体赋值D.可以用关系运算符对字符数组比较大小8.若二维数组y有m列,则位于y[i][j]之前的元素有(D)个。A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+19.非数组、指针或引用型变量做实参时,它和对应形参之间的数据传递方式是(B)。山东省远大网络多媒体股份有限公司c++笔试题2A.地址传递B.单向值传递C.双向值传递D.由用户指定传递方式10.下面关于new和delete运算的叙述中,错误的说法是(C)。A.由new分配的内存空间是连续的B.如果当前内存无足够的空间可分配,则new运算符返回NULLC.由new运算符分配的内存空间,当函数执行结束时系统会自动收回D.对于程序中的静态数组占用的存储空间不能使用delete来释放11.派生类对象只能访问基类中的(A)。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员12.设有定义structdata{inti;charch[4];doubleq;doublef;}b;结构体变量b占用内存的字节数是(D)A.18B.16C.20D.2413.关于构造函数的叙述中,错误的说法是(B)。A.构造函数的名称必须为类名B.构造函数最多只能有一个C.创建对象时自动执行构造函数D.构造函数无任何函数类型14.下面叙述中错误的是(B)A.预处理命令都必须以#开始B.C++程序在程序执行过程中对预处理命令进行处理C.在程序中凡是以#开始的语句都是预处理命令D.一行只能写一条预处理命令山东省远大网络多媒体股份有限公司c++笔试题315.下面判断是否构成重载函数的条件中,错误的是(D)。A.参数类型不同B.参数个数不同C.参数顺序不同D.函数返回值不同二、判断题(共10分,每题1分)1.设inta=1,b=2,c=3,d=4;则条件表达式ab?a:cd?c:d的值为3。(X)2.字符型变量不能赋予整数。(X)3.在循环语句体中,continue的作用是结束本次循环,回到循环开头。(X)4.按C++标识符的语法规定,new是合法的标识符。(X)5.设有两个数组a[]={'a','b','c'}和b=abc用函数strlen()得到的值是相等的。(X)6.int*buffer=newint[256]是分配256个字节。(X)7.设float*p,则p+1是当前地址加float类型的长度。(√)8.设对变量intx进行“”运算,结果等价x/2。(X)9.构造函数释放指针成员占据的内存空间,析构函数给数据成员赋初值。(X)10.设包含文件在D盘的“ABC”目录中,则指定路径的语法格式是#includeD:\ABC\头文件名.h。(X)3、简答题(共20分,每题5分)1.面向对象的三个基本特征,并进行简单的描述。(1)多态:通过继承、重写虚函数等来实现。父类指针可以指向并使用子类对象,增加了程序的灵活性和可重用性。(2)封装:将具有类似属性的数据、函数放到一个类里。也叫隐藏信息。有利于高内聚低耦合。(3)继承:子类继承父类的数据和函数。一个子类有一个父类叫单继承。一个子类有多个父类叫多继承。为避免菱形继承的问题采用虚继承。2.引用与指针的区别是什么?山东省远大网络多媒体股份有限公司c++笔试题4(1)引用是给那个变量起别名,本身就是那个变量。指针是个变量,储存的是个地址,指向内存的一个存储单元,(2)可以有const指针,不可以有const引用。(3)可以有多级指针,不可以有多级引用。(4)可以有空指针,不可有空引用,并且引用必须在定义的时候初始化。(5)指针初始化后可以改变指向,引用不可以改变指向。(6)Sizeof指针是指针的大小,Sizeof引用是目标变量的本身的大小。(7)在进行自增自减操作时,意义不一样。3.C++中静态成员有何作用,它的特点是什么?静态成员可以在同一个类不同对象间共享在内存中只有一份,只初始化一次。4.c++中,什么是函数重载?什么是运算符重载?什么是构造函数?什么是析数?函数重载就是在同一作用域内,函数名一样,函数参数列表不同,返回值无所谓。用来定义一组功能相似的函数,避免了函数名字太多的问题。增加了程序的可读性。四、阅读分析题(共15分,每题5分)1.阅读以下程序并写出输出结果。#includeiostream.hvoidmain(){for(inti=1,s=0;i20;i++){if(i%2==0||i%3==0)continue;couti'';s+=i;}coutsendl;}答:15711131719732.阅读以下程序并写出输出结果。#includeiostream.h山东省远大网络多媒体股份有限公司c++笔试题5voidmain(){inta[]={1,3,5,7,9};int*p,*q,k;p=&a[0];q=&a[4];for(;q-p0;p++,q--){k=*p;*p=*q;*q=k;}for(k=0;k4;k++)couta[k];coutendl;}答:97533.阅读以下程序并写出输出结果。#includeiostream.hclassA{inta;public:A(){cout调用了A的构造函数endl;}};classB{intb;public:B(){cout调用了B的构造函数endl;}};classC:publicA,publicB{Bobj_b;Aobj_a;intc;public:C(){cout调用了C的构造函数endl;}};voidmain(){Cc;}答:调用了A的构造函数山东省远大网络多媒体股份有限公司c++笔试题6调用了B的构造函数调用了B的构造函数调用了A的构造函数调用了C的构造函数五、编程题(共25分,第1题10分,第2题15分)1.输入某年某月某日,判断这一天是这一年的第几天?。2.编程实现一个计算人民币加减运算的程序,包含对人民币中的圆,角的计算。能正确的将角进位到元。要求必须使用面向对象编程的方法编程,使用类和运算符重载的知识。必须进行加减法和赋值两种运算。1.#includeiostreamUsingnamespacestd;IntFun(intyear,intmonth,intday){If(year=0||month=0||day=0)//检查参数return-1;IntsumDays=0;IntFebruary=28;If((year%100==0&&year%400==0)||(year%100!=0&&year%4==0)||(year%3200==0&&year%172800==0))//是闰年February=29;Switch(month)//看是几月{Case1:sumDays=0;Break;山东省远大网络多媒体股份有限公司c++笔试题7Case2:sumDays=31;Break;Case3:sumDays=31+February;Break;Case4:sumDays=31+February+31;Break;Case5:sumDays=31+February+31+30;Break;Case6:sumDays=31+February+31+30+31;Break;Case7:sumDays=31+February+31+30+31+30;Break;Case8:sumDays=31+February+31+30+31+30+31;Break;Case9:sumDays=31+February+31+30+31+30+31+31;Break;Case10:sumDays=31+February+31+30+31+30+31+31+30;Break;Case11:sumDays=31+February+31+30+31+30+31+31+30+山东省远大网络多媒体股份有限公司c++笔试题831;Break;Case12:sumDays=31+February+31+30+31+30+31+31+30+31+30;Break;}ReturnsumDays+day;}
本文标题:c++笔试题
链接地址:https://www.777doc.com/doc-2901744 .html