• 考题整理搜狗笔试题


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

    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。

  • 相关阅读:
    VS2013 调试窗口一闪而过的解决方法
    什么是文件?
    局部变量和全局变量的区别
    一个简单java程序的要素
    运行一个简单的Java程序
    Javascript 构造函数原型继承机制
    函数式编程之一等公民的函数
    弹性布局flex-兼容问题
    TypeScript中的枚举类型
    依赖注入
  • 原文地址:https://www.cnblogs.com/wdw828/p/2221886.html
Copyright © 2020-2023  润新知