前言

前天拿这个《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. 通过 xshell 连接 ubuntu on windows(WSL)

    装上 ubuntu on windows 后,默认要先打开 cmd, 再运行 bash 进入 ubuntu 的 shell. 但是这个shell很难看,配色不好就算了,还存在各种复制粘贴麻烦. 默认没 ...

  2. 线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵

    题目传送门 /* 线段树基本功能:区间值的和,修改某个值 */ #include <cstdio> #include <cstring> #define lson l, m, ...

  3. 把AM_B_ENTRY表里的ARCHIVAL_CODE字段,值复制给BA_ARCHIVAL_CODE_160812字段

    UPDATE AM_B_ENTRY T SET T.BA_ARCHIVAL_CODE_160812=T.ARCHIVAL_CODE SELECT BA_ARCHIVAL_CODE_160812 FRO ...

  4. 关于itchat用法的一篇博文

    itchat的原理就是利用爬虫爬取了网页版微信的内容,并进行一系列的操作,运用微信,通过手机与电脑时登录的互通性,可以实现用微信对电脑的操作,通过itchat.msg_register方法,可以得到目 ...

  5. 486 Predict the Winner 预测赢家

    给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,…….每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直到没有剩余分数 ...

  6. Unity3d的Sprite Packer用法介绍

    我们用来做sprite 的图片,通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了.如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图片上的空间尽 ...

  7. RabbitMQ八:交换机类型Exchange Types--Topic介绍

    前言 上一章节,我们说了两个类型,本章我们说一下其三:Topic Exchange Topic Exchange  Topic Exchange – 将路由键和某模式进行匹配.此时队列需要绑定要一个模 ...

  8. java之idea打jar包

    1.选中项目右键,选择Open module settings,如图: 2.点击Artifacts,添加jar,如图: 3.create jar,必须选择项目的更目录 4.build artfacts ...

  9. map,reduce高阶函数

    iterator:迭代器 python的iterator是一个惰性序列(即你不主动去遍历它,他不会去计算其中元素的值) m是一个iterator,所以通过tuple()函数让整个序列计算出来,并返回一 ...

  10. ES-自然语言处理

    前言 自然语言处理(Natural Language Processing)是计算科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理 ...