zoukankan      html  css  js  c++  java
  • 考题整理搜狗笔试题

        今天上午早起,跟学院的几个哥们一起去北大,参加搜狗的笔试题目,没有收到短信和邮件,只能霸笔,但是整个考试下来,还是发现不少有价值的收获,随手抄了几道考题出来,顺便在机器上运行了一下,看看结果,跟自己当时想的有何出入,也算是一种查漏补缺,让自己不断的积累吧。

    1.写出下列程序的运行结果:

    #include <iostream>

    using namespace std;

    int main()

    {
    short input[10]={'A','B','C','D','E'};
    unsigned char *p=(unsigned char*)&input;
    int s=0;
    int temp=sizeof(input);
    for(int i=0; i<temp; ++i)
    {
    char v=p[i];
    if(v>0)
    s+=v-'A'+i;
    }
    printf("%d\n",s);
    }

    答案 :A:10    B:15    C:25   D:30   E:35   F:得到不确定的结果或程序崩溃

    分析: 这道题目出的很不错,当时考试的时候我最先得到的答案是20,可是没有选项,最后只能选F,刚才运行了一下结果,发现最主要的问题是出在unsigned char *p=(unsigned char*)&input一行代码上,将一个char型的指针p指向了原来的input数组的首地址,考试时以为每次循环时向下进行的是两个字节,所以前5次循环每次都会取出A-E的一个数据,将其转换成相应的ASCII码,与s进行相加计算,错误就出现在这里,当运行unsigned char *p=(unsigned char*)&input这句代码之后,每次for循环char v=p[i],每次只向下进行一个字节的大小,而short型本身所占用的内存空间是两个字节,所以当i为奇数时,p[i]都是0,当i为偶数时,p[i]正好为数组中的数,所以最后的结果为30。

  • 相关阅读:
    HD2058The sum problem
    采用循环链表结构求解约瑟夫问题
    java线性表学习笔记(二)
    java线性表学习笔记(一)
    HD1004Let the Balloon Rise
    HD1005Number Sequence
    用c++库函数轻松解决回文问题
    accelerated C++ 中查找url(学习笔记)
    C++ 之关联容器 map
    pytorch 迁移学习[摘自官网]
  • 原文地址:https://www.cnblogs.com/wdw828/p/2221886.html
Copyright © 2011-2022 走看看