寒武纪2019秋招软件岗笔试(一)

时长:120分钟 总分:100分

108浏览 0人已完成答题

题型介绍
题型 单选题 填空题 简答题
数量 5 4 15
1.
假设栈初始为空,将中缀表达式g/f+(e*d-c*b)/a转换为等价的后缀...
问题详情

假设栈初始为空,将中缀表达式g/f+(e*d-c*b)/a转换为等价的后缀表达式的过程中,当扫描到b时,栈中的元素依次是




2.
下列选项中,不能构成二分查找中关键字比较序列的是
问题详情




3.
把32位非零浮点数强制转换成16位浮点数后,不可能
问题详情




4.
下列程序段的时间复杂度是for(int k =&nbs...
问题详情

下列程序段的时间复杂度是
for(int k = 1 k <= n k *= 2)
for(int j = k j <= n j++)
count++




5.
一个8位二进制整数,若采用补码表示,且由3个1和5个0组成,则最小值为
问题详情




6.
某指令流水线由5段组成,各段所需要的时间分别为:△t、3△t、△t、2△t...
问题详情

某指令流水线由5段组成,各段所需要的时间分别为:△t3t、△t2t、△t,连续输入n条指令时的吞吐率为
793086jld.jpg
7.
已知袋子中有白球和黑球各99个,按照以下规则将球取出:每次从袋中拿出两个球...
问题详情

已知袋子中有白球和黑球各99个,按照以下规则将球取出:每次从袋中拿出两个球;如果两个球是同色的,则再放入一个黑球;如果两个球是异色的,则再放入一个白球。请问最终袋里只剩一个黑球的概率是
8.
若f[0]=0, f[1]=1,f[n+1] = (f[n] + f[n-...
问题详情

f[0]=0, f[1]=1,f[n+1] = (f[n] + f[n-1]) / 2,则随着i的增大,f[i]将接近于
9.
这段代码执行后的输出结果是 ____: char *str = “C...
问题详情

这段代码执行后的输出结果是 ____

char *str = “Cambricon”

str[0] = ‘\0’

printf(“%s\n”, str)

10.
C++中虚函数的关键字是
问题详情
11.
函数exam_2_1判断含有n个无符号短整型数的数组data中是否有重复元...
问题详情

函数exam_2_1判断含有n个无符号短整型数的数组data中是否有重复元素,如果是,返回true,否则返回false

请把两处空缺的语句填写完整,注意时间复杂度不要超过O(n)

bool exam_2_1 (unsigned short* data, int n) {

    bool buffer[65536]

    memset(buffer,false,sizeof(buffer))

    for(int i=0i<ni++)

        if( _____________) return true

        else  __________

    return false

}

12.
下面的程序完成了以下功能:在非降序列中二分查找一个数,当v存在时返回它出现...
问题详情

下面的程序完成了以下功能:在非降序列中二分查找一个数,当v存在时返回它出现的第一个位置,如果不存在,返回这样一个下标i,在此处插入v(原来的元素A[i], A[i+1],…全部向后移动一个位置)后序列仍然有序:

#include<iostream>

using namespace std

int lower_bound(int *A, int l, int r, int v) {

    int mid

    while (l < r) {

        mid =                    

        if (             ) r = mid

        else l = mid + 1

    }

return l

}

int main() {

    int A[10] = {0, 0, 1, 2, 4, 5, 10, 20, 20, 30}

// 在 A 数组里用lower_bound查找 40

    cout << lower_bound(           ) << endl

    return 0

}
13.
下面的程序实现了,使用优先队列的dijkstra算法求解起点为0的单源最短...
问题详情

下面的程序实现了,使用优先队列的dijkstra算法求解起点为0的单源最短路问题。有定义如下:

typedef pair<int, int> pii

priority_queue<pii, vector<pii>, greater<pii> > q

pair在比较时会先比较第一个数,再比较第二个数,因此q是一个小元素优先的优先队列。对于图中节点x,first[x]代表其第一条出边的编号。对于图中编号为e的边,v[e]代表这条边的终点,w[e]代表这条边的权值。

试完善以下代码:

bool done[MAXN]

for (int i = 0 i < n i++) d[i] = (i == 0 ? 0 : INF)

memset(done, false, sizeof(done))

q.push(make_pair(d[0], 0))

while(!q.empty()) {

pii u = q.top() q.pop()

int x = u.second

if (done[x])              

done[x] = true

for (int e = first[x] e != -1 e = next[e])

if (                       ) {

d[v[e]] =                

                        

}

}

14.
BigNumber是一个大数类,其重载了<运算符(但是没有重载>...
问题详情

BigNumber是一个大数类,其重载了<运算符(但是没有重载>运算符),你可以直接使用<进行比较大小,可惜的是,这种比较非常的费时。 exam_2_3可以从一个含有n个元素的BigNumber数组data中找出最大的和最小的,请把它填写完整,注意对BigNumber<运算符方法的调用不允许超过1.5n次。

struct BigNumber

{

    bool operator < (const BigNumber& r) const

    …一些其他成员

}

一个例子,函数exam_2_3_1可以返回两个BigNumber中较大的那个。

BigNumber exam_2_3_1(BigNumber a, BigNumber b){return a<b?b:a}

void exam_2_3 (BigNumber* data,int n,/*out*/BigNumber* pmax,/*out*/BigNumber* pmin){

*pmax=data[0]

    *pmin=data[0]

    int i=1

    while(i<n){

        //在这个括号里写你的代码,没有行数限制

 

 

 

 

 

 

 

 

 

 

 

    }

}

15.
MIPS指令实现的简单数据通路中,操作分成了哪5个时钟周期?对MIPS的寄...
问题详情

MIPS指令实现的简单数据通路中,操作分成了哪5个时钟周期?对MIPS的寄存器——寄存器ALU指令和store指令请各写出一条具体指令,并列出它们在在各个时钟周期的具体操作。
16.
什么是进程和线程?有何区别?用户进程间通信和线程间通信分别有哪几种方式?
问题详情
17.
规格化float16浮点数,有1位符号位,5位阶码,10位尾数。请问fp1...
问题详情

规格化float16浮点数,有1位符号位,5位阶码,10位尾数。请问fp16精确能表示数字 -2048和-2049么?fp16所表示的十进制数的有效数字大约是多少位?

18.
C语言函数strcat的定义如下: char *strcat (ch...
问题详情

C语言函数strcat的定义如下:

char *strcat (char *dest, const char *src)

请问:为什么这个函数不是void类型的,而有一个char *的返回值?const char *src相比于char *src,为什么要加const?进一步地,const char *src char const *src 以及char* const src有什么区别。

19.
在C++的工程项目中,一般头文件里都会出现类似于下列的代码,而且命名基于所...
问题详情

C++的工程项目中,一般头文件里都会出现类似于下列的代码,而且命名基于所在项目源代码树的全路径

#ifndef CAMB_INCLUDE_TEST_H_

#define CAMB_INCLUDE_TEST_H_

…   // code

#endif  // CAMB_INCLUDE_TEST_H_

简述#define #endif 和 #ifndef的作用
20.
已知拓展欧几里得算法如下: void gcd(int a, int ...
问题详情

已知拓展欧几里得算法如下:

void gcd(int a, int b, int& d, int& x, int& y) {

    if (!b) { d = a x = 1 y = 0 }

    else { gcd(b, a%b, d, y, x) y-= x*(a/b) }

}

请问给定ab(均大于0),求解得到的 dxy分别代表什么?

n逆元的定义如下:如果有ax=1(mod n),那么我们称xa的模n逆元。

则a在模n意义下逆元存在的条件是什么?试说明如何用拓展欧几里得算法计算逆元
21.
时间转换
问题详情

给定一个12小时制的时间,请将其转换成24小时制的时间。说明:12小时制的午夜12:00:00AM,对应的24小时制时间为00:00:00。12小时制的中午12:00:00PM,对应的24小时制时间为12:00:00。 输入描述: 一个描述12小时制时间的字符串。所有的输入都是合理的,不用考虑输入不合理的情况。输入样例: 08:03:45PM 输出描述: 一个描述24小时制时间的字符串。输出样例 20:03:45
22.
计数器
问题详情

小爱有一个奇怪的计数器。在第一个时刻计数器显示数字3,在接下来的每一个时刻,屏幕上的数字都会减1,直到减到1为止。

接下来,计数器会重置为上一个计数周期初始值的两倍,然后再每一个时刻减1。具体过程如下图所示:

找出规律,并打印出t时刻计数器的值。
输入描述: 输入为时刻t,一个整形数字。0&ltt&lt1e12输入样例: 4 输出描述: 计数器显示的值。输出样例 6
23.
非整除集合
问题详情

给定一个由正整数组成的集合S,找出一个最大的子集合S,使得S中任意两个数字的和都不能被K整除。

例如S=「10,10,12,19,22,24,25」,K=4。此时S最多只能取3个数,可能的取值为「10,12,25」或者「19,22,24」等。
输入描述: 输入为两行,第一行两个数字,分别表示集合S的元素数量N和K。第二行为N个数字,分别是S的各个元素值。

数据范围:
1 < N < 10^5
1 < K < 100
1 < S[i] < 10^9输入样例: 4 3 1 7 2 4 输出描述: 输出为一个数字,集合S的最大长度。输出样例 3
24.
公平划分
问题详情

小爱和小溪有N个数字,他们两个想公平的分配这些数字。小爱拿的数字集合为I=「i1, i2, ik」,小溪获得剩下的J,J=「j1, j2, jn-k」。但是他们衡量分配公平与否的原则与众不同:

在小爱拿到其中的K个数字的前提下,计算出他们分配偏差f(I)的最小值

输入描述: 输入第一行两个数字,分别表示总的数字量N和小爱拿的数字量K。第二行有N个数字,表示每个数字的值。输入样例: 4 1 3 3 3 1 输出描述: 输出一个数字,表示分配偏差f(I)的最小值。输出样例 2