牛客20170323模拟笔试C++方向

选择题部分:
1 C++中下面程序输出的结果为:()

#include <iostream>
using namespace std;
int main(){
    float a=b=12.5;
    cout<<a<<endl<<b;
    return 0;
}

A 12.5 12.5
B 12.5 0.0
C 0.0 12.5
D 编译错误

代码第五行报错 [Error]’b’ was not declared in this scope
选D

2 一个算法的时间复杂度为(n^3+n^2log2n+5n)/n^2,按照O()记法,其数量级表示为()
A O(n^3)
B O(n)
C O(nlongn)
D O(n^2logn)

n^3/n^2=n
选B

3 A市B,C两个区,人口比例为3:5,据历史统计B区的犯罪率为0.01%,C区为0.015%,现有一起新案件发生在A市,那么案件发生在B区的可能性有多大?()
A 37.5%
B 32.5%
C 28.6%
D 76.9%

3*0.01%/(3*0.01%+5*0.015%)≈28.6%
这个是条件概率吧,忘了

4 下述有关虚函数和纯虚函数说法错误的是()
A 被virtual关键字修饰的成员函数,就是虚函数
B 在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion1() = 0
C 同时含有纯虚函数的类称为抽象类,它可以被实例化,但是对象不可以调用纯虚函数
D 使用纯虚函数的意义是在很多情况下,基类本身生成对象是不全情理的

参考:http://blog.csdn.net/xwpc702/article/details/8670025选C 抽象类是不能被实例化的,因为有纯虚函数没有定义

5 下面不属于TCP协议拥塞控制部分的是()
A 快速重传
B 慢启动
C 带外数据
D 快速恢复

参考:http://blog.csdn.net/sicofield/article/details/9708383
选C 计算机网络知识

6 牛客网为激励员工努力工作,决定根据每月的工作绩效评选“牛客之星”,王某在前10个月恰好只有连续的4个月中当选“牛客之星”,他的另三位同事杨某,肖某,华某也做到了这一点。关于这四人当选“月度之星”(“牛客之星”??)的月份,已知:(1)王某和杨某仅有三个月同时当选;(2)杨某和肖某仅有三个月同时当选;(3)王某和华某不曾在同一个月当选;(4)仅有2人在7月同时当选;(5)至少有1人在1月当选。根据以上信息,有3人同时当选“牛客之星”的月份是()
A 1-3月
B 2-4月
C 3-5月
D 4-6月
E 5-7月

1234 华
3456 肖
4567 杨
5678 王
选D

7 设G(V,E)为一个无向图,顶点集大小为P,边集大小为Q,则G图中所有顶点度之和为()
A P
B Q
C 2Q
D 2(P+Q)

选C 2*Q

8 下面哪种数据结构不能用来描述栈?()
A FIFO list
B LIFO list
C Piles
D Push-down lists

A 随便选的。问的不是实现,是描述,那就选对立面吧。

9 下面有关C++线程安全,说法错误的是?()
A 线程安全问题都是由全局变量及静态变量引起的
B 若每个线程中对全局变量、静态变量只有只读操作,而无写操作,一般来说这个,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般需要考虑线程同步,否则的话就可能影响线程安全
C C++标准库里面的string保证是线程安全的
D POSIX线程标准要求C标准库中的大多数函数具备线程安全性

选C
http://blog.csdn.net/chengonghao/article/details/51943731

10 以下不属于NoSQL数据库的是?()
A Redis
B Mongodb
C Cassandra
D PostgreSQL

常用有这些Cassandra、Mongodb、CouchDB、Redis、 Riak、Membase、Neo4j HBase
选D 参考:http://blog.jobbole.com/1344/

11 查询该目录及子目录下所有的以.conf为后缀的文件
A find ./ -name “conf”
B find ./ -name “*.[conf]”
C find ./ -type f | egrep “.(conf)”
D find ./ -regextype posix-extended -regex “.*.(conf)”

太久没接触 感觉“*.conf”就可以
选B 灵性选

/*
* A 查询该目录及子目录下所有名为”conf”的文件
* B 查询该目录及子目录下以xx.c xx.o xx.n xx.f的文件
* C 查询该目录及子目录下 包含conf的文件 如xx/config/xx也可以
* D 要用.* 开头 因为*置于正则表达式的第一个字符,不具任何特殊意义
* regextype 的type类型包括posix-awk, posix-basic, posix-egrep
* 和 posix-extended四种,不加的话,默认的是默认的正则表达式类
* 型是emacs。
* 参考:
* find中使用正则表达式
* http://blog.csdn.net/lee244868149/article/details/43406335
*
* POSIX正则表达式
* http://www.cnblogs.com/muxiaoye/p/308ecdfb23c98b2a177e8e6eab7293a9.html
*/

12 假定把磁盘上的一个数据块中的信息输入到一个双缓冲区的时间为T=0.1ms,将缓冲区中的数据送到用户区的时间M=0.05ms,而CPU对数据的处理时间C=0.05ms,这样系统对每个数据块的处理时间为()
A 0.05ms
B 0.1ms
C 0.15ms
D 0.25ms

操作系统知识(为什么感觉是计算机组成原理讲的)
原题https://www.nowcoder.com/questionTerminal/b92966024ee9410e959f883dd6e89b25
http://www.examw.com/os/xp/180575/
选B 流水式作业考虑最大的值,所以选B吗?

13牛客网为了扩大业务规模,招了很多人,因此重新租用一间新的办公大楼,牛客的工程师们用电脑制作出了办公大楼的模型,正在规划如何布局新的工作环境,他们打算在娱乐区用大小相等的圆形材料分割出一些空间,如果使用3种不同圆形材料最多可以将空间分为八个区域(包括圆形以外的区域),如果给你七个圆形材料,你最多可以帮助工程师们分出多少个空间?()
用两个圆可以把平面空间分成4份,三个圆可以分成8份,现在有七个圆,最多可以把平面空间分成几份()(大概意思是这样)
A 128
B 100
C 64
D 44

作业帮是个好东西
https://www.zybang.com/question/836443b3973ed7238ca04d86b3861be1.html
选D 公式n^2-n+2

14 下面关于哈夫曼树的说法中,错误的是()
A 哈夫曼树是一棵完全二叉树
B 哈夫曼树中没有度为1的结点
C 哈夫曼树具有最上的带权路径长度
D 同一组权值构造的哈夫曼树不唯一

选A 哈夫曼树不一定是完全二叉树

15 下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能()

void perm(int list[], int k, int m)
{
    if(    )
    {    
        copy(list,list+m,ostream_iterator<int>(cout," "));    
        cout<<endl;    
        return;
    }
    for (int i=k; i<=m; i++)
    { 
        swap(&list[k],&list[i]);    
        (    );    
        swap(&list[k],&list[i]);
    }
}

A k!=m 和 perm(list,k+1,m)
B k==m 和 perm(list,k+1,m)
C k!=m 和 perm(list,k,m)
D k==m 和 perm(list,k,m)

原题:
https://www.nowcoder.com/questionTerminal/af099970cfcc44cfa8e43348f600a017?pos=16&orderByHotValue=1
选B 第一个if是判断是不是要打印全排列了,第二个是交换k,i后递归的下一步

16 下列关于线程和进程的描述错误的是?()
A 一个进程至少有一个线程来运行
B 进程合适在SMP机器上进行,而线程则可以跨机器迁移
C 线程必须存在进程里面
D 即使程序员不创造任何线程,操作系统将创建主线程为每一个应用程序或进程

参考 http://blog.csdn.net/u014744118/article/details/52826572
选B 正确的是:线程合适在SMP机器上进行,而进程则可以跨机器迁移。我当时看反了。。
感谢牛客网 Jccccc丶灬同学指出这个(我原来选的是D)

17 一个顺序存储的长度为n的线性表,在第i个位置前面插入一个元素,总共需要移动的元素个数为()。
A n-i
B n-i+1
C i
D n-i-1

作业帮现在也面向大学生了吗?
https://www.zybang.com/question/b49c2fe0d9191516373ac501b61f9e89.html
选B 读题的时候,其实我很想说有没有第0个位置(插播笑话)

18 每10分钟运行一次crond任务exam,下面哪项正确?()
A /10 * * * exam  
B 10/* * * * * exam
C * * /10 * exam
D * /10 * * exam

参考 https://www.nowcoder.com/questionTerminal/b3d3dafd6a55486880c6a339ff6547c0

http://blog.csdn.net/lzuacm/article/details/52443341
选A

19 某系统中有9台打印机,三个进程P1,P2,P3需要打印机的数量分别为7台、6台和4台。若P1、P2、P3已申请到4台、1台和2台且每个进程必须申请到需要数量的打印机才能执行结束,然后释放资源。下列说法正确的是()
A 存在不止一个安全序列,所以系统处于安全状态
B 因为不存在安全序列,所以系统处于不安全状态
C 存在安全序列P3、P1、P2,所以系统 处于安全状态
D 存在安全序列P3、P2、P1,所以系统 处于安全状态

选C 没什么好解释的

20 对算法估计空间复杂度,关注的是()
A 程序代码占用的空间
B 程序使用的辅助空间
C 程序运行占用的空间
D 程序使用的数据空间

参考 http://sanwen.net/a/fjmufpo.html
看了下这个公众号 已经70+我没读了 懒惰的我
选B ACD都不对

以上的答案都是自己琢磨的,不保证一定对。

编程题部分:
代码均复制自此帖 https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1

1
这里写图片描述

输入例子:
1221
1234

输出例子:
YES
NO

代码:

/*
作者:NotDeep
链接:https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1
来源:牛客网
*/

#include <bits/stdc++.h>

using namespace std;

string solve(int number) {
    ostringstream oss;
    oss << number;
    string s = oss.str();
    int n = s.length();
    long long n1, n2;
    for(int i = 1; i < n; i++) {
        n1 = n2 = 1;
        for(int j = 0; j < i; j++)
            n1 *= s[j] - '0';
        for(int j = i; j < n; j++)
            n2 *= s[j] - '0';
        if(n1 == n2)
            return "YES";
    }
    return "NO";
}
int main() {
    int x;
    cin >> x;
    cout << solve(x) << endl;
    return 0;
}

2
题目 2
这里写图片描述
这里写图片描述

代码:

/*
作者:NotDeep
链接:https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1
来源:牛客网
*/

#include <bits/stdc++.h>

using namespace std;

vector<string> v;
int main() {
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) {
        string x;
        cin >> x;
        sort(x.begin(), x.end());
        v.push_back(x);
    }
    sort(v.begin(), v.end());
    int ans = 0;
    string tmp("");
    for(int i = 0; i < v.size(); i++) {
        if(tmp != v[i]) tmp = v[i], ans++;
    }
    cout << ans << endl;
}

把输入的字符串排序,再把这n个字符串再排序,然后找有多少个不同的

3
这里写图片描述
这里写图片描述

代码

/*
作者:NotDeep
链接:https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1
来源:牛客网
*/

#include <bits/stdc++.h>

using namespace std;

const int maxn = 500;

vector <string> *l;

int m, n, x;
int solve(int i, int numZeroes, int numOnes) {
    vector<string> &list = *l;
    if(i == list.size()-1) {
        for(int x = 0; x < list[i].size(); ++x) {
            if(list[i][x] == '1') --numOnes;
            if(list[i][x] == '0') --numZeroes;
        }
        if((numOnes | numZeroes) >= 0) return 1; 
        else return 0;
    }
    int a = solve(i+1, numZeroes, numOnes);
    for(int x = 0; x < list[i].size(); ++x) {
            if(list[i][x] == '1') --numOnes;
            if(list[i][x] == '0') --numZeroes;
    }
    if((numOnes | numZeroes) < 0) return a;
    int b = 1 + solve(i+1, numZeroes, numOnes);
    return max(a, b);
}
int main() {
    vector<string> v;
    cin >> x >> n >> m;
    for(int i = 0; i < x; i++) {
        string tmp; cin >> tmp;
        v.push_back(tmp);
    }
    l = &v;
    cout << solve(0, n, m) << endl;
    return 0;
}

这个感觉是类似0-1背包的问题,但是看了参考答案用的是动态规划的方法。

感谢牛客网!!
https://www.nowcoder.com/132183

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值