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。

  • 相关阅读:
    Tina系统的安装
    检查有无相机的权限
    BarEasy打印小程序_CS
    js的websocket
    生成GUID
    读取excel数据到数据库里
    字符串trim
    使用 runOnUiThread在线程内更新UI
    PdfDocument生成PDF,总是产生空文件
    打印36进制的条码序列号
  • 原文地址:https://www.cnblogs.com/wdw828/p/2221886.html
Copyright © 2011-2022 走看看