2021.12.19

69 篇文章 3 订阅

自己作题遇到的一些问题

1.(腾讯一道面试题)计算表达式x^6+4x^4+2x^3+x+1最少需要做( 3 )次乘法?

分析:这道题其实是一个数学题,看到这,我们首先对其进行化简,有

         x^6+4x^4+2x^3+x+1=x^3(x^3+4x+2)+x+1

其中,x^3=x*x*x,这是2次乘法,还有4x=4*x,这是1次乘法,总共合起来3次乘法。

2.以下这个代码中,Fun(21)的值为(  31  )

int  Fun(int a)

{

      a=(1<<5)-1;
      return a;

}

分析:Fun(21)相当于将a=21传入这个函数,接下来编译器运行的是(1<<5)-1,我们在计算这个时要先明白“<<”是什么意思,它表示左位移,在二进制中向左位移1个位,这个数本省乘以2,如果1<<5左位移5次,那么就相当于乘以5个2,即 二进制100000=32,再减去1=31。

3. 有以下程序段:那么while循环执行的次数是(   B  )

int  i=0;                            A.有语法错误,不能执行         B. 无限次

while (i = 1)   {  i++;  }      C. 执行1次                               D. 执行0次

分析:先要明白while括号中的循环语句i = 1表示的是给i赋值,那么这一步永远为真,循环一直执行,不会停止,这题的想法就是要明白“=” 和 “==”的区别。

4. 在某系统中,15*5==101成立,那么采用的是(  C )进制。

A. 6                B.7                     C.8                      D.9

分析:15的最后一位是5,5*5=25,如果是6进制,那么就是逢6进1,25的话还剩一个1,看着可以,若是7进制的话,逢7进1,25的话还剩4,排除B,若是8进制的话,逢8进1,25的话还剩1,看着可以,若是9进制的话,逢9进1,25的话还剩7,排除D。接下来就在A和C中通过计算来选择正确答案,15的6进制是1*6+5*6^0=11,11*5=55,但是101的6进制为1*6^2+0*6^1+1*6^0=37,左右两边不相等,排除,因此选择C。

看看C答案如何计算,15的8进制为1*8^1+5*8^0=13,13*5=65,101的8进制为1*8^2+0*8^1+1*8^0=65,等号左右两边相等,因此,选择C。

5.定义有整型int i=0XFE78DA45; int k=0XAC3189B2,则i^k值为 (  A   )

A.0X524953F7    B.0XAC308800        C.0XFE79DBF7        D.0X00000001

分析:这道题,我们先将 "^''概念搞懂,这是按位运算符,表示异或,其意思是同样的位上,两个数相同为0,不同为1,因此,我们用排除法,这样快点,当然也可以把它全部都计算,但是我觉得没必要,太浪费时间了,先看i=0XFE78DA45,其最后一位是5,5的二进制101,再看k=0XAC3189B2,最后一位是2,二进制为010,两个二进制进行异或^为111,其表示的数是7,因此,排除B,D,再选择除了0x之外的第1位,i是F,表示15,二进制为1111,k是A,表示10,二进制为1010,两个异或之后为0101,表示的数为5,所以排除C,选择A。

6. 注意,在编译器中,非0即真,也就是等于0时为假,等于其他数时为真

例如 :int a=5,b=4,c=3;那么a > b >c为0

分析:先看a > b,a是5,b是4,5 >4为真,那么就是1,c为3,1 >3,为假,就是0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值