前言

前天拿这个《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. 跟我一起玩Win32开发(18):使用对话框的两个技巧

    相信大家知道对话框怎么用了,就是先用“资源编辑器”设计一个对话框,然后在代码中加载处理.今天,我向大家分享两个使用对话框的技巧,还是比较实用的.不用担心,先喝杯茶,很简单的,一点也不复杂,总之,看俺写 ...

  2. 4-redis数据过期策略

    1 基本 redis也许只是用来存放临时数据.比如股市行情.游戏中一个持续一个月的活动等,都属于缓存数据,过了一段就没用了.如果没有过期策略,就会有大量垃圾数据在内存中堆积. 2 TTL time t ...

  3. 洛谷 P2841 A*B Problem

    https://www.luogu.org/problemnew/show/P2841 根本不会啊... 大概就是:如果两个数模a的结果相同,那么它们前面同时加上一个0或1后模a的结果仍然相同,因此可 ...

  4. DFS HDOJ 5348 Ponds

    题目传送门 题意:有一张无向图,度数小于2的点会被去掉,直到全都大于等于2,问连通块顶点数为奇数的权值和为多少 分析:首先DFS把度数小于2的vis掉,第二次DFS把属于同一个连通块的vis掉,检查是 ...

  5. android动画(1)各种动画属性表,简单代码,xml配置

    1.动画的属性表 1.1 常用属性 它们可以通过代码setXXX,getXXX,也可在xml中配置. 属性[类型] 功能 备注 Duration[long] 属性为动画持续时间 时间以毫秒为单位 fi ...

  6. h5-29-WEB存储-通讯录实战.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. checkbox:全选、全不选、单选(慕课网题目)

    任务 1.在第27行处补充完整,实现当点击"全选"按钮时,将选中所有的复选项. 提示:document.getElementsByTagName("input" ...

  8. ES6学习笔记(8)----对象的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ...

  9. windows 下防火墙安全加固,配置规则

    netsh advfirewall firewall: 显示关于防火墙操作的常见命令的帮助信息 netsh advfirewall firewall show rule name=all dir=in ...

  10. 第二周作业xml学习情况

    1.xml简介 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标签没有被预定义.您需要自行定义标签. 它被设计为具有自我描述性. 它是W3C的推荐标 ...