《C/C++工程师综合练习卷》
前言
前天拿这个《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++工程师综合练习卷》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- WIN7 64位操作系统 无法找到Access驱动
为了更充分的利用硬件资源,我想很多人都开使用64位操作系统了,同时你可以也发现了在64位操作系统上ODBC的驱动找不到了,所以ODBC的东西都没法用了. 因为2007以前版本的Office只有32位版 ...
- sybase修改默认字符集为cp936
原文地址:http://blog.sina.com.cn/s/blog_4d6854860100xn3f.html 报错信息:2402 error converting characters into ...
- Charles对移动APP抓包(https)
1.下载安装Charles 2.设置代理 (1)查看默认端口:Proxy->Proxy Settings 在这个页面会看到HTTP Proxy的默认端口是8888 (2)查看当前电脑的IP:H ...
- Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...
- 服务器php-cgi.exe进程过多,导致CPU占用100%的解决方法
再使用iis服务器中经常会出现php-cgi.exe进程过多,导致CPU占用100%,最终造成网站运行过慢甚至卡死的情况,重启iis会好一会,过一段时间久出现这种情况,为什么会出现这种情况呢,应该怎么 ...
- P1320 压缩技术(续集版)
题目描述 设某汉字由N X N的0和1的点阵图案组成,如下图.我们依照以下规则生成压缩码.连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从上到下,由左到右.第一个数表示连续有几个0 ...
- P1979 华容道 spfa题解
题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...
- mysql安装及基本概念
1.mysql下载安装 在官网下载5.6版本(越老稳定性越好,现在公司一般都用5.6),选择windows,64bit .下载完解压看bin目录下是否有mysql·exe和mysqld.exe. 解压 ...
- T4312 最大出栈顺序
题目描述 给你一个栈和n个数,按照n个数的顺序入栈,你可以选择在任何时候将数 出栈,使得出栈的序列的字典序最大. 输入输出格式 输入格式: 输入共2行. 第一行个整数n,表示入栈序列长度. 第二行包含 ...
- 031_spark架构原理
spark核心组件 driver master worker executor task(只有task是线程) 核心组件的原理图解