C++技能测试试卷一
姓名______ 联系电话________________ Email________________
学校______________ 专业_______________ 学历______ 英语水平_____
类别:□国家统招 □成教 □自考 □网络教育 其它___________
第一部分:基础部分
考试时间:120分钟 考试成绩___________
计算机基础部分
选择题 (每题2分,共60分)
1.下列关于栈的叙述正确的是:
A.栈是非线性结构
B.栈是一种树状结构
C.栈具有先进先出的特征
D.栈具有后进先出的特征
2.结构化程序设计所规定的三种基本控制结构是:
A.输入、处理、输出
B.树形、网形、环形
C.顺序、选择、循环
D.主程序、子程序、函数
3.结构化程序设计的一种基本方法是:
A.筛选法
B.递归法
C.归纳法
D.逐步求精法
4.如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:
A.选择
B.投影
C.连接
D.并
5.下列叙述中正确的是:
A.显示器和打印机都是输出设备
B.显示器只能显示字符
C.通常的彩色显示器都有7种颜色
D.打印机只能打印字符和表格
6.微型计算机中运算器的主要功能是进行:
A.算术运算
B.逻辑运算
C.算术和逻辑运算
D.初等函数运算
7.COMMAND.COM是DOS系统的最外层模块,通常称之为:
A.引导程序
B.输入输出系统
C.命令处理系统
D.文件管理系统
8、电子邮件是:
A.网络信息检索服务
B.通过Web网页发布的公告信息
C.通过网络实时交互的信息传递方式
D.一种利用网络交换信息的非交互式服务
9.与十进制数255相等的二进制数是:
A.11101110
B.11111110
C.10000000
D.11111111
10.下列叙述中正确的是:
A.指令由操作数和操作码两部分组成
B.常用参数xxMB表示计算机的速度
C.计算机的一个字长总是等于两个字节
D.计算机语言是完成某一任务的指令集
11.计算机的内存储器比外存储器:
A.价格便宜
B.存储容量大
C.读写速度快
D.读写速度慢
12.字长为32位的计算机是指:
A.该计算机中的CPU有32个寄存器
B.该计算机能够处理的最大数不超过232
C.该计算机每秒钟所能执行的指令条数为32MIPS
D.该计算机中的CPU可以同时处理32位的二进制数
13.在微机系统中,对输入输出设备进行管理的基本程序模块(BIOS)存放在:
A.RAM中
B.ROM中
C.硬盘中
D.寄存器中
14.微机显示器一般有两组引线,它们是:
A.电源线与信号线
B.电源线与控制线
C.电源线与地线
D.控制线与地线
15.486PC机主板上一般带有高速缓冲存储器Cache,它是()之间的缓存。
A.CPU与辅助存储器
B.CPU与主存储器
C.软盘与内存
D.硬盘与内存
16.目前因特网(Internet)尚未提供的服务是:
A.电子邮件
B.文件传送
C.远程使用计算机
D.电视广播
17.IEEE 802.3的物理层协议10 BASE-T规定从网卡到集线器的最大距离为:
A.100m
B.185m
C.360m
D.500m
18.表示”在使用x之前,先使x的值加1″的正确方式是:
A.++x
B.x++
C.+x
D.+x+
19.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为:
A.1.4
B.1
C.2.0
D.2
20.以下程序的输出结果是:
main()
{int a=5,b=4,c=6,d;
printf(″%d\n″,d=a>b? (a>c? a:c):(b));
}
A.5
B.4
C.6
D.不确定
21.在下列字符序列中,不可用做C语言标识符的是:
A.student_num
B.class
C.#88
D.month_12
22.下列用于printf函数的控制字符常量中,代表”横向跳格”的字符常量是:
A.\b
B.\t
C.\r
D.\f
23.设x的值为5,则表达式(++x)+(++x)+(++x)的值是:
A.24
B.20
C.15
D.25
24.下列叙述中,正确的一条是:
A.语句”goto 12;”是合法的
B.for(;;)语句相当于while(1)语句
C.if(表达式)语句中,表达式的类型只限于逻辑表达式
D.break语句可用于程序的任何地方,以终止程序的执行
25.下列语句执行后的结果是:
y=5;p=&y;x=*p++;
A.x=5,y=5
B.x=5,y=6
C.x=6,y=5
D.x=6,y=6
26.下述程序段的输出结果是:
int x=10;
int y=x++;
printf(″%d,%d″,(x++,y),y++);
A.11,10
B.11,11
C.10,10
D.10,11
27.如果文件1包含文件2,文件2中要用到文件3的内容,而文件3中要用到文件4的内容,则可在文件1中用三个#include命令分别包含文件2、文件3和文件4。在下列关于这几个文件包含顺序的叙述中,正确的一条是:
A.文件4应出现在文件3之前,文件3应出现在文件2之前
B.文件2应出现在文件3之前,文件3应出现在文件4之前
C.文件3应出现在文件2之前,文件2应出现在文件4之前
D.出现的先后顺序可以任意
28.在下列叙述中,正确的一条是:
A.语句”int pt;”中的pt是指针变量名
B.语句”int p=a;”等价于”int p;p=&a[0];”
C.运算符和&都是取变量地址的运算符
D.已知指针变量p指向变量a,则a和p值相同,都是变量a的值
29.在下列叙述中,错误的一条是:
A.scanf()函数可以用来输入任何类型的多个数据
B.数组名作函数参数时,也采用”值传送”方式
C.如果形参发生改变,不会改变主调函数的实参值
D.函数的实参与形参的类型应一致
30.在下列叙述中,错误的一条是:
A.关系表达式的值是一个逻辑值,即”真”或”假”,可赋给一个逻辑变量
B.数组必须先定义,后使用,并且只能逐个引用数组元素,而不能一次引用整个数组
C.在C语言中,判断一个量是否为”真”时,用0代表”假”,1代表”真”
D.将字符串常量赋给字符数组时,必须在字符串后加′{checkhtml}′,表示字符结束
填空题(每空1分,共10分)
1.对于输入为N个数进行快速排序算法的平均时间复杂度是((Nlog2N))
2.在面向对象方法学中,直接反映了用户对目标系统的要求的模型是(功能模型)
3.软件测试方法中,黑盒测试个白盒测试法是常用的方法,其中黑盒测试法主要是用于测试(软件外部功能)
4.关系型数据库管理系统中存储与管理数据的基本形式是(二维表)
5.数据库管理系统常见的数据模型有层次、网状和(关系)三种。
6.软磁盘最外边的磁道数是(0)号磁道。
7.能把计算机处理好的结果转换成为文本、图形、图像或声音等形式并输送出来的设备称为(输出)设备。
8.计算机中网络通信协议IP是(网际协议)。
9.十进制数53转换为十六进制数为(35)。
10.买来一张新盘后,在存入文件前,必须进行(格式化(或初始化、FORMAT))处理。
C++程序设计
对错题。判断以下说法的正确性(10分)
1. 说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。对
2. 所有的表达式都有值。 错
3. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
4. 类的静态数据成员需要在定义每个类的对象时进行初始化。
5. 基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。
6. 当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。
7. 当函数的返回值是数组类型的,传递的是数组第一个元素的地址。
8. 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
9. 字符串’hello,world”在内存中存放时,占用11个字节的空间。 错
10.用new动态申请的内存空间,必须用delete来释放 。对
智力测试(10分)
1、对一批编号为1~100全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关。。。。。。
问:最后为关熄状态的灯的编号。
1,4,9,16,25。。。。。。 1-100中为整数平方的数
2、有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间?
翻译题(10分)
Microsoft® Visual C++® 6.0 is the most powerful of the Visual Studio® 6.0 languages and provides unique capabilities for developing enterprise applications and accessing low-level operating system functions. Here in this section of the Library you’ll find the complete Visual C and C++ 6.0 documentation, along with code samples and technical articles to help you develop your applications.
第二部分:高级部分
(只考虑实习或就业的学员必须测试此部分内容)
考试时间:120分钟 考试成绩___________
一、简答题 (20)
1、操作系统由哪几部分组成?
进程管理、内存管理、文件管理和设备管理
2、Windows程序的入口是哪里?写出Windows消息机制的流程。
3、请解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
4、写出 BOOL flag 与”零值”比较的 if 语句和 char *p 与”零值”比较的 if 语句:
5、内联函数在编译时是否做参数类型检查?
二、以下为Windows下的32位C++程序,计算sizeof的值(10分)
char str[] = “www.51job.com” ;
char *p = str ;
int n = 10;
-
请计算
sizeof (str ) =
sizeof ( p ) =
sizeof ( n ) =
void Func ( char str[100])
{
(请计算:)
sizeof( str ) =
}
void *p = malloc( 100 );
请计算
sizeof ( p ) =
三.阅读程序,解答问题(30)
- 分析下列哪两个表达式是等同的 ?
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
2.分析以下程序的执行结果
#include<iostream.h>
class A
{
public:
int n;
};
class B:virtual public A{};
class C:virtual public A{};
class D:public B,public C
{
int getn(){return B::n;}
};
void main()
{
D d;
d.B::n=10;
d.C::n=20;
cout<<d.B::n<<”,”<<d.C::n<<endl;
}
3、分析以下程序的执行结果
#include<iostream.h>
void main()
{
int a[]={10,20,30,40},*pa=a;
int *&pb=pa;
pb++;
cout<<*pa<<endl;
}
四、程序填空题(20分)
-
程序功能:在任意输入的字符串str中的凡是’c’字母后添加”><”,然后输出结果串。
#include<iostream.h>
void main()
{
char s[60],str[30];
①
for(int i=0,j=0; ② ;i++)
{ if( ③ )
{ s[j++]=’>’;s[j++]=’<’;}
}
cout<<”The New string is:”<<s<<endl;
} -
程序功能:求下述序列的累加和(序列累加n项,正整数n通过cin从键盘输入)。
sum= 2/1 + 3/2 + 5/3 + 8/5 + 13/8 + 21/13 + 34/21 + …
#include <iostream.h>
void main( )
{
int n,i=1,a=1,term31=2,term32=1;
float sum=0;
cin>>n;
while(i<=n)
{ ①
a=term31;
② ;
③ ;
i++;
}
cout<<”sum=”<<sum<<endl;
}
五、编程题(20分)
- 写一个函数将其中的\t都转换成4个空格。
2.(10分) 编程序,解决搬砖问题。有36块砖,由成年男、女和小孩共36人来搬,男子每人搬4块,女子每人搬3块,两个小孩抬一块,要求一次全搬完,问需要男、女、小孩各几人?
C++技能测试试卷一答案
第一部分:基础部分
公共基础知识
选择题:
1-5: D C D B A
6-10: C C D D A
11-15: C D B A B
16-20: D A A B C
21-25: C B A B A
26-30: A A D D B
填空题:
(1):O(Nlog2N)
(2):功能模型
(3):软件外部功能
(4):二维表
(5):关系
(6):0
(7):输出
(8):网际协议
(9):35
(10) 格式化(或初始化、FORMAT)
C++知识
题号 1 2 3 4 5 6 7 8 9 10
对/错 对 错 对 错 错 对 错 对 错 对
智力题
1、 1,4,9,16,25。。。。。。 1-100中为整数平方的数
2、 一只两头点,一只一头点,当第一只烧完后,开始计时且把第二只剩下的一头点燃,烧完就是15分。
翻译: 微软Visual C++6.0是Visual Studio® 6.0中最强大的语言。。。
第二部分:高级部分
一、简答题 (20)
1、操作系统由哪几部分组成?
进程管理、内存管理、文件管理和设备管理
2、Windows程序的入口是哪里?写出Windows消息机制的流程。
Windows程序的入口是WinMain函数
消息机制:系统将会维护一个或多个消息队列,所有产生的消息都会被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统。
3、请解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
Internet Protocol协议是为跨越局域网和广域网环境的大规模互联网络而设计的世界标准的协议组。IP协议工作在第三层-网络层,位于数据链路层的上面。主要用于实现连接到互联网上的结点之间的通信。
TCP: 传送控制协议(Transmission Control Protocol)
这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。(注:大多数网络用户程序使用TCP)。
UDP: 用户数据报协议(User Datagram Protocol)
这是提供给用户进程的无连接协议,用于传送数据而不执行正确性检查。
TCP与UDP处于传输层。
4、写出 BOOL flag 与”零值”比较的 if 语句和 char *p 与”零值”比较的 if 语句:
if ( flag ); if ( !flag )
if (p == NULL) ;if (p != NULL)
5、内联函数在编译时是否做参数类型检查?
答:做类型检查,因为内联函数就是在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来代替。
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
char str[] = “www.51job.com” ;
char *p = str ;
int n = 10;
-
请计算
sizeof (str ) = 14
sizeof ( p ) = 4
sizeof ( n ) = 4
void Func ( char str[100])
{
(请计算:)
sizeof( str ) = 4
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = 4
三.阅读程序,解答问题(30)
- 下列哪两个表达式是等同的 ?
各式表示的意思分别为:
A const int* a = &b; //a是const,但指针a可变
B const int a = &b; //a是const,但a可变
C const int const a = &b; //a和a都是const,常量和指针的值都不能改变
D int const const a = &b; //a和*a都是const,常量和指针的值都不能改变
因此C,D两者是相同的。
总结个技巧:如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
2. 分析以下程序的执行结果
#include<iostream.h>
class A
{
public:
int n;
};
class B:virtual public A{};
class C:virtual public A{};
class D:public B,public C
{
int getn(){return B::n;}
};
void main()
{
D d;
d.B::n=10;
d.C::n=20;
cout<<d.B::n<<”,”<<d.C::n<<endl;
}
解:
D类是从B类和C类派生的而B类和C类又都是从类A派生,但这是虚继承关系,即是虚基类.因此共用一个的副本,所以对于对象d,d.B::n与d.C::n是一个成员。
所以输出为:
20,20
3、分析以下程序的执行结果
#include<iostream.h>
void main()
{
int a[]={10,20,30,40},*pa=a;
int *&pb=pa;
pb++;
cout<<*pa<<endl;
}
解:
pa为数组的指针,首先指向a[0],pb是pa的引用,当执行pb++时,也使pa指向了a[1],所以输出为:20
四、程序填空题(20分)
- 程序功能:在任意输入的字符串str中的凡是’c’字母后添加”><”,然后输出结果串。
#include<iostream.h>
void main()
{
char s[60],str[30];
① cin.getline(str,20);
for(int i=0,j=0; ② ;i++) // s[j++]=str[i]
{ if( ③ ) // str[i]==’c’
{ s[j++]=’>’;s[j++]=’<’;}
}
cout<<”The New string is:”<<s<<endl;
}
2.程序功能:求下述序列的累加和(序列累加n项,正整数n通过cin从键盘输入)。
sum= 2/1 + 3/2 + 5/3 + 8/5 + 13/8 + 21/13 + 34/21 + …
(提示:分子和分母都是费波那契数列)
#include <iostream.h>
void main( )
{
int n,i=1,a=1,term31=2,term32=1;
float sum=0;
cin>>n;
while(i<=n)
{ ① // sum+=float(term31)/term32;
a=term31;
② ; // term31=term31+term32;
③ ; // term32=a;
i++;
}
cout<<”sum=”<<sum<<endl;
}
五、编程题(20分)
- 写一个函数将其中的\t都转换成4个空格。
该函数命名为convert,参数的意义为:
*strDest目的字符串,strSrc源字符串,length源字符串的长度
函数实现为:
char convert(char *strDest, const char *strSrc,int length)
{
char * cp = strDest;
int i=0;
while(*strSrc && i< length) {
if (*strSrc==’\t’) //将\t转换成4个空格
{
for(int j=0;j<4;j++)
cp++=’ ‘;
}
else //否则直接拷贝
cp++=strSrc;
strSrc++;
i++;
}
return strDest;
}
2.(10分) 编程序,解决搬砖问题。有36块砖,由成年男、女和小孩共36人来搬,男子每人搬4块,女子每人搬3块,两个小孩抬一块,要求一次全搬完,问需要男、女、小孩各几人?
#include <iostream.h>
main()
{ int x=0,y,z;
for(;x<=9; x++)
for(y=0;y<=12 ;y++)
{
z=36-x-y;
if(4x+3y+0.5z==36)
cout<<”x=”<<x<<”,y=”<<y<<”,z=”<<z;
}
}