寒武纪2019秋招软件岗试题(二)

时长:120分钟 总分:100分

111浏览 0人已完成答题

题型介绍
题型 单选题 填空题 简答题
数量 6 2 14
1.
如果开始时计算机处于大写输入状态,现在反复按照CapsLock、字母键A、...
问题详情

如果开始时计算机处于大写输入状态,现在反复按照CapsLock、字母键A、字母键S、字母键D、字母键F的顺序来回按键,即CapslockASDFDSACapslockASDFD,则屏幕上输出的第85个字母是




2.
在程序运行过程中,如果递归调用的层数过多,会因为【   ...
问题详情

在程序运行过程中,如果递归调用的层数过多,会因为【       】引发错误




3.
假定有4个整数用8位补码分别表示R1=FEH ,R2=F2H ,R3=90...
问题详情

假定有4个整数用8位补码分别表示R1=FEH ,R2=F2H ,R3=90H,R4=F8H,若将运算结果存放在一个8位的寄存器中,则下列运算会发生溢出的是




4.
下列函数的时间复杂度是【      】 ...
问题详情

下列函数的时间复杂度是【      】

int test(int n) {

    int i = 0, sum = 0

    while(sum < n) sum += ++i

    return i

}






5.
一个栈的入栈序列为1,2,3,…,n,其出栈顺序是 p1,p2,p3,…,...
问题详情

一个栈的入栈序列为1,2,3n,其出栈顺序是 p1,p2,p3,…,pn。若 p2=3, p3 可能的取值的个数是




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




7.
在 1 到 999 之间,有__________个每位数字上数字完全不相同...
问题详情

在 1 到 999 之间,有__________个每位数字上数字完全不相同而且由偶数构成的整数。
8.
随着 n 逐渐增大,Darts函数的输出结果逐渐接近于____。 d...
问题详情

随着 n 逐渐增大,Darts函数的输出结果逐渐接近于____

double rand_double() {

        return rand() / (double)RAND_MAX

}

double Darts(int n) {

      int k = 0

      double x, y

      for (int i = 0 i < n i++) {

      x = rand_double()

      y = x

      if ((x * x + y * y) <= 1.0)

      k++

   }

   return k * 4.0 / n

}

9.
从 (0, 1)中随机选择两个数,两个数的积小于 1/3的概率是_____...
问题详情

从 (0 1)中随机选择两个数,两个数的积小于 1/3的概率是_________
10.
先序遍历为 d,c,b,a的不同二叉树的个数是
问题详情

先序遍历为 d,c,b,a的不同二叉树的个数是
11.
程序完善题  已知求解多源最短路的Floyd-War...
问题详情

程序完善题

 已知求解多源最短路的Floyd-Warshall算法如下:

for (int k = 0 k < n k++)

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

    for (int j = 0 j < n j++)

      if (d[i][k] < INF && d[k][j] < INF)

        d[i][j] = ________________________

如果现在我们不关心多源最短路问题,只关心每两点是否有通路,可以用10分别表示连通和不连通。

for (int k = 0 k < n k++)

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

    for (int j = 0 j < n j++)

      d[i][j] =_____________________________


12.
 同余与模,完善下列程序计算 (a^n) % mod in...
问题详情

 同余与模,完善下列程序计算 (a^n) % mod

int pow_mod(int a, int n, int mod) {

  if (n == 0) return ________

  int x = ________

  long long ans = (long long)x * x % mod

  if (n % 2 == 1) ans =________

  return (int)ans

}

 

13.
下面的程序完成了以下功能:在非降序列中二分查找一个数,当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

}

 

14.
下面的程序实现了,使用优先队列的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]] =                 
                          

          }

}

15.
列举几条虚拟内存相比较于实存的几个优点。
问题详情
16.
以下判断素数的代码在int表示的所有正数范围内是正确的么?为什么?如何改进...
问题详情

以下判断素数的代码在int表示的所有正数范围内是正确的么?为什么?如何改进?

bool is_prime(int n) {

  assert(n >= 1)

  for (int i = 2 (i * i) <= n i++)

    if (n % i == 0) return false

  return true

}

17.
简述 C 和 C++ 中 struct 的区别
问题详情

简述 C C++ struct 的区别
18.
规格化float16浮点数,有1位符号位,5位阶码,10位尾数。请问fp1...
问题详情

规格化float16浮点数,有1位符号位,5位阶码,10位尾数。请问fp16精确能表示数字 -2048和-2049么?fp16所表示的十进制数的有效数字大约是多少位?
19.
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有什么区别。
20.
在C++的工程项目中,一般头文件里都会出现类似于下列的代码,而且命名基于所...
问题详情

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

#ifndef CAMB_INCLUDE_TEST_H_

#define CAMB_INCLUDE_TEST_H_

…   // code

#endif  // CAMB_INCLUDE_TEST_H_

简述#define #endif 和 #ifndef的作用
21.
回文数索引
问题详情

给定一个仅由小写字母组成的字符串。现在请找出一个位置,删掉那个字母之后,字符串变成回文。请放心总会有一个合法的解。如果给定的字符串已经是一个回文串,那么输出-1。 输入描述: 第一行包含T,测试数据的组数。后面跟有T行,每行包含一个字符串。输入样例: 3 aaab baa aaa 输出描述: 如果可以删去一个字母使它变成回文串,则输出任意一个满足条件的删去字母的位置(下标从0开始)。例如:

bcc

我们可以删掉位置0的b字符。输出样例 3 0 -1
22.
最佳配对
问题详情

给定两个长度为N的整型数组A和B。如果Ai==Bj则认为(i,j)为最佳配对。所有的最佳配对在满足以下条件的情况下组成最佳配对集合:A和B中的各个元素最多在集合中出现一次。例如,A =「5, 10, 11,12, 14」,B = 「8, 9 ,11, 11, 5」,配对集合为「(0,4),(2,2),(2,3)」,因为在集合A中索引2出现了两次,所以上面的配对集合不是最佳配对集合。你的任务是修改B中的一个元素,使得最佳配对集合的元素最多。并输出最佳配对集合的数量。 输入描述: 输入第一行为一个数字N,表示数组A和B的长度。输入第2行和3行都是N个数字,分别表示数组A和B的元素输入样例: 4 1 2 3 4 1 2 3 3 输出描述: 修改B中的一个元素,并打印最大的最佳配对集合数量。注意:必须修改B中的一个元素。输出样例 4