前言

前天拿这个《C/C++工程师综合练习卷》练习了一下,现将错题以及精题分析总结。

错题分析与总结

2 . 下面的程序可以从1….n中随机等概率的输出m个不重复的数。这里我们假设n远大于m,填充空缺语句。

knuth(int n, int m)
{
srand((unsigned int)time(0));
for (int i = 0; i < n; i++) {
if ( ) {
cout << i << endl;
( );
}
}
}

A. rand()%(n-i) <= m m–

B. rand()%(n-i) < m m–

C. rand()%(n-i) >= m m++

D. rand()%(n-i) > m m++

分析:

总结:

3 . 以下prim函数的功能是分解质因数。括号内的内容应该为?

void prim(int m, int n)
{
if (m > n)
{
while ( ) n++;
( );
prim(m, n);
cout << n << endl;
}
}

A . ram/n m/=n

B . m/n m%=n

C . m%n m%=n

D . m%n m/=n

分析:分解质因数是将一个数差分为几个质数相乘,首先找到一个n可以被m整除,整除就是余数为0才能跳出循环,而如果只是做除法,只有当m < n的时候才会出现等于0。这与if的条件判断相互冲突。

答案:D

总结:错选C

7 . 下面关于虚函数和函数重载的叙述不正确的是?

A . 虚函数不是类的成员函数

B . 虚函数实现了C++的多态性

C . 函数重载允许非成员函数,而虚函数则不行

D . 函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定

分析:虚函数是类内定义的成员函数,所以A的说法明显不对;

虚函数和函数重载都实现了C++的多态性,但是表现形式不同,函数重载调用根据参数个数、参数类型等进行区分,而虚函数则是根据动态联编来确定调用什么,故,BD说法正确;

函数重载既可以是类的成员函数也可以是非成员函数,比如:

int fun(int a);
int fun(int a, int b);

这就是非成员重载,但是虚函数就必须是成员函数,否则就会失效,所以C选项也是正确的。

答案:A

总结:错选了C

10 . 下面程序运行后的结果为?

char str[] = "glad to test something";
char *p = str;
p++;
int *p1 = static_cast<int *="">(p);
p1++;
p = static_cast<char *="">(p1);
printf("result is %s\n", p);

A . glad to test something

B . ad to test something

C . test something

D . to test something

分析:该题的关键是要认清楚强制类型转换后指针的类型,p的类型是char * , p++后p指向str数组的第二个元素,即字母l的位置。

p1的类型是int * , p1++后p1指向的位置增加4个细节,指向str数组中的第6个元素,即t的位置。

因此最后p的内容为“to test something“

答案:D

总结:错选B

13 . 在Java中,以下关于方法重载和方法重写描述正确的是?

A . 方法重载和方法的重写实现的功能相同

B . 方法重载出现在父子关系中,方法重写是在同一类中

C . 方法重载的返回值类型必须一致,参数项必须不同

D . 方法重写的返回值类型必须相同。(或是其子类)

分析:方法重载的返回值的类型可以不同,因为判断方法重载的方法主要是根据方法的参数不同来判定;方法重写的返回值类型需要相同,重写就是子类继承了父类的方法,并在此方法上重写属于自己的特征,既然是继承过来的,那么它的返回值类型就必须要相同。

答案:D

总结:错选C

16 . In the main() function, after ModifyString(text) is called, what’s the value of ‘text’?

int FindSubString( char* pch )
{
int count = 0;
char * p1 = pch;
while ( *p1 != '\0' )
{
if ( *p1 == p1[1] - 1 )
{
p1++;
count++;
}else {
break;
}
}
int count2 = count;
while ( *p1 != '\0' )
{
if ( *p1 == p1[1] + 1 )
{
p1++;
count2--;
}else {
break;
}
}
if ( count2 == 0 )
return(count);
return(0);
}
void ModifyString( char* pText )
{
char * p1 = pText;
char * p2 = p1;
while ( *p1 != '\0' )
{
int count = FindSubString( p1 );
if ( count > 0 )
{
*p2++ = *p1;
sprintf( p2, "%i", count );
while ( *p2 != '\0' )
{
p2++;
}
p1 += count + count + 1;
}else {
*p2++ = *p1++;
}
}
}
void main( void )
{
char text[32] = "XYBCDCBABABA";
ModifyString( text );
printf( text );
}

A . XYBCDCBABABA

B . XYBCBCDAIBAA

C . XYBCDCBAIBAA

D . XYBCDDBAIBAB

分析:FindSubString()中

用到了“回文段落跳过”

*p1 == p1[1] - 1,即看该字符串是不是递增的,即x后面是y,y后面是z,然后用count记录

*p1 == p1[1] + 1,即看该字符串是不是递减的,即z后面是y,y后面是x,然后用count2递减

若回文则返回 回文子串长度,若不回文则返回0

ModifyString()中

过滤XY,找到第一个回文字段的开始,即BCDCB 中的B,然后跨过回文段

到ABABA,进入FindSubString() 得 ABA,即count=1;

sprintf( p2, “%i”, count );把B换成1,即A1,然后 *p2++=*p1++ A1BAA

答案:C

总结:错选B,没仔细做,蒙的,汗颜。。。

19 . 下面程序运行时的输出结果是?

#include<iostream>
using namespace std;
class MyClass
{
public:
MyClass(int i = 0)
{
cout << i;
}
MyClass(const MyClass &x) //拷贝构造函数
{
cout << 2;
}
MyClass &operator=(const MyClass &x) //赋值构造函数
{
cout << 3;
return *this;
}
~MyClass()
{
cout << 4;
}
};
int main()
{
MyClass obj1(1), obj2(2);
MyClass obj3 = obj1;
return 0;
}

A . 11214444

B . 11314444

C . 122444

D . 123444

分析:首先程序中存在三个MyClass对象;

前两个对象构造时分别输出1,2;

第三个对象是这样构造的MyClass obj3 = obj1;这里会调用拷贝构造函数,输出2;

然后三个对象依次析构,输出444;

所以最终输出122444;

答案:C

总结:错选D

精题收藏

4 . 问x的值等于?

enum string{
x1,
x2,
x3=10,
x4,
x5,
} x;

A . 5

B . 12

C . 0

D . 随机值

分析:在C语言中,函数外变量定义相当于全局变量,程序初始化为0;函数内变量定义相当于局部变量,程序初始化为随机值。

答案:C

《C/C++工程师综合练习卷》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. apcloud混合式开发app学习笔记

    修改图标新建项目检出到本地--------------------------1.api.ajax var loginName = $api.val($api.byId('uname')); var ...

  2. C++11 多线程相关的头文件

    C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable& ...

  3. 移动端rem.js的使用方法

    下面的代码一是我根据rem的使用经验,自己写的一个rem.js,发现很好用,能适用所有移动端h5页面的自适应需求: 代码一: window.onload = function(){ /*720代表设计 ...

  4. 转 Oracle中merge into的使用

    http://www.cnblogs.com/highriver/archive/2011/08/02/2125043.html

  5. Linux--NiaoGe-Service-01

    安装环境介绍 CentOS 6.9_x86_64 我们选择的是基本安装,也即“Basic Server”. 安装完成后重启来到(runlevel 3)纯文本界面. 例题 批量创建账号:假设有5个账号x ...

  6. 生成HTML表格的后台模板代码

    有时候,我们需要在后台拼接生成前端的html表格,一般的做法就是各种string.StringBuilder的拼接(例子省略...),这样的话如果表头不同就没法做到代码的重用,增加代码的冗余,下面我分 ...

  7. 虚方法virtual详解

    虚方法virtual详解   从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在 ...

  8. python的与或非运算

    真的很重要,栽了个跟头!!!(虽然以前好像知道...) print(True or False and False) print((True or False) and False) # True # ...

  9. Python学前基础知识

    Python基础计算机常识:硬件性能:CPU.内存输入设备:鼠标.键盘外部存储设备:硬盘输出设备;显示器.打印机(不算自带)通讯设备:无线网卡----------------------------- ...

  10. 什么是python 中的顶层代码?

    在python语言中我们经常会听到顶层代码的说法,但是什么是顶层代码? 在python中,我们是以缩进来区分代码层次的,所以顶层代码指的是缩进为0个空格的代码. 看如下例子: PP = 3.14 de ...