博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【兆芯】秋招 笔试编程题
阅读量:3925 次
发布时间:2019-05-23

本文共 1891 字,大约阅读时间需要 6 分钟。

点击上方蓝字关注我,我们一起学编程

欢迎小伙伴们分享、转载、私信、赞赏

微信搜索:编程笔记本

微信搜索:编程笔记本
微信搜索:编程笔记本

一、填空题

执行以下语句:

int a = 5;a += (a++) + (++a);

此时 a 的值为( )。

解析:

将原问题转化为:

a = a + (a++) + (++a);

根据运算符的优先级,() 优先级最高,所以先计算括号中的部分。

图1

所以最终的答案是 19 。

微信搜索:编程笔记本
微信搜索:编程笔记本
微信搜索:编程笔记本

二、程序改错题

请问一下代码有什么问题?

void test_function(){
unsigned short loop = 500; unsigned short a = 0; while (true) {
a += loop; loop--; if (loop < 0) {
break; } }}

解析:

  • unsigned short 类型的 loop 永远不会小于 0 ,所以程序是一个死循环。
  • 用于存储和的变量 a 长度不够,会造成溢出,应使用 longlong long

三、简答编程题

编程实现输入 unsigned int 型变量 a, a != 0 ,输出 i ,要求 2^i <= a < 2^(i+1)

解析:

原问题等价于:找出 a 的二进制表示中,最左侧的 1 所在的位置(从 0 开始)。

int get_i(unsigned int a){
int pos = 0; while ((a >>= 1) != 0) {
++pos; } return pos;}

微信搜索:编程笔记本

微信搜索:编程笔记本
微信搜索:编程笔记本

四、应用编程题

给定 NODE & STACK 结构体,在此基础上编程实现动态链表模拟栈的操作,补充完整以下五个函数。

typedef struct node {
char c; struct node* next;} NODE;typedef struct stack {
NODE* top;} STACK;/* 题目有错,这五个函数的返回值应该都为 void ,返回 char 没意义 */void push(STACK* stack, char c){
NODE* nd = new NODE; nd->c = c; nd->next = stack->top; stack->top = nd;}void pop(STACK* stack, char* c){
*c = stack->top->c; stack->top = stack->top->next;}void init_stack(STACK* stack){
stack->top = nullptr;}void clear_stack(STACK* stack){
NODE* nd; while (stack->top != nullptr) {
nd = stack->top; stack->top = stack->top->next; delete nd; }}void display_stack(STACK* stack){
NODE* nd = stack->top; while (nd != nullptr) {
cout << nd->c << endl; nd = nd->next; }}

五、逻辑思维题

五个洞排成一排,其中一个洞里藏有一只狐狸。每个夜晚狐狸都会跳到一个相邻的洞里。每个白天你都只允许检查其中一个洞。怎样才能保证狐狸最终会被抓住?

图2

解析:

先给出答案:依次检查 2、3、4、2、3、4 。

可行性分析:

  • 第一次检查 2 时:若不在,则它只可能在 1、3、4、5 ,那么跳动后,只可能在 2、3、4、5;
  • 第一次检查 3 时;若不在,则它只可能在 1、4、5 ,那么跳动后,只可能在 1、3、4、5;
  • 第一次检查 4 时;若不在,则它只可能在 1、3、5 ,那么跳动后,只可能在 2、4;
  • 第二次检查 2 时;若不在,则它只可能在 4 ,那么跳动后,只可能在 3、5;
  • 第二次检查 3 时;若不在,则它只可能在 5 ,那么跳动后,只可能在 4;
  • 第二次检查 4 时;狐狸必然在 4 中。
    微信搜索:编程笔记本
    微信搜索:编程笔记本
    微信搜索:编程笔记本
你可能感兴趣的文章
蓝牙基带数据传输机理分析
查看>>
各种文件后缀名与打开方式大全
查看>>
利用Java的Properties 类读取配置文件信息
查看>>
用java读写ini配置文件
查看>>
java读取和修改ini配置文件实例代码
查看>>
网络字节序与主机字节序
查看>>
inet_aton和inet_network和inet_addr三者比较-《别怕Linux编程》之五
查看>>
组播通信
查看>>
setsockopt 设置socket 详细用法
查看>>
在局域网中实现多播功能
查看>>
什么叫组播地址(Multicast Address )?
查看>>
掌握IP地址知识 子网掩码与子网划分
查看>>
组播地址,IP组播地址
查看>>
什么是组播
查看>>
组播通信
查看>>
Linux网络编程一步一步学-UDP组播
查看>>
Linux C编程---网络编程
查看>>
在Linux创建库函数(1)
查看>>
在Linux创建库函数(2)
查看>>
在Linux创建库函数(3)
查看>>