风趣的IT面试题

作者: 编程应用  发布:2019-09-26

一段看起来异常的粗略C代码,预期结果是输出array数组。

有趣的IT面试题,有趣IT面试题

一段看起来很粗大略C代码,预期结果是输出array数组。

#include<stdio.h>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
 int d;
 for(d = -1;d <= (TOTAL_ELEMENTS - 2); d++)
  printf("%dn", array[d+1]);
 return 0;
}

代码编写翻译运转后,结果不是想要的不胜数组,而是空值,那是过多个人就能想到宏定义了,原因是宏定义是不能够获得数组的长度。

可大家把for循环改一下就有分化的结果了

 for(d = -1; d <= ((int)TOTAL_ELEMENTS-2); d++) 

把TOTAL_ELEMENTS强制转变到int类型的,结果就改为了:

。。。。。。。。。。那是我们想要的结果,这便是说宏定义没难题。

我们在原本的main()函数中加一句

 int array_length = TOTAL_ELEMENTS;

这样和连串强转的意义应该是同样的,追踪监歌后得到上面包车型客车结果:

唤醒是未有找到符号"TOTAL_ELEMENTS",但是array_length却有值。。。。。。。很郁闷

随即,大家在for循环里管理数老董度

 for(d = -1; d <= ((sizeof(array) / sizeof(array[0])) - 2); d++)

近年来,输出结果应该正是我们想要的不胜数组了。可结果吧,啥都没输出。。。。。。。更郁闷

那就一连跟踪监视

左近都没难点,但是注意它们的门类,是无符号整形(unsigned int),而循环条件d是整形(int),何况d的开首值为-1,不再无符号整形(unsigned int)定义范围之内,今后总的来讲好疑似类别的标题了,那大家将循环条件d的开首值改为0试试:

#include<stdio.h>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
 int d;
 for(d = 0; d <= (TOTAL_ELEMENTS - 1); d++)
  printf("%dn", array[d]);
 return 0;
}

输出的结果是

结果便是大家想要的。未有开展强制类型转变,也未尝开展贰回赋值,只是将循环条件d的开头值定义在了无符号整形(unsigned int)的限量以内。

小编们再做个小测验

int main()
{
    int array[] = {23,34,12,17,204,99,16};
    int d = -1;
    if(d <= (sizeof(array) / sizeof(array[0])) -2)
        printf("先有鸡n");
    else
        printf("先有蛋n");
    return 0;
}

从代码看来,应该是出口“先有鸡”。可是此次结果又是牵萝补屋,输出的是“先有蛋”。

故而建议在写代码的时候尽量制止使用无符号类型,同有时间也尽量幸免有号子类型和对应的无符号类型进行比较等。

================================================================

自身才疏学浅和别的原因,没有进展越来越尖锐的钻研,只是不时看看的IT面试题,感兴趣简单的测了弹指间。

唯独追踪监歌后,CX0017:错误:未有找到符号"TOTAL_ELEMENTS",依然尚未找到原因,有掌握的大神不要紧引导一二。。。。。。

#include<stdio.h>#define TOTAL_ELEMENTS (sizeof / sizeof)int array[] = {23,34,12,17,204,99,16};int main(){int d;for(d = -1;d <= (TOTAL_ELEMENTS - 2); d++)printf("%dn", array[d+1]);return 0;}

有意思的面试标题

此题有两种答案,首要看回答者的角度怎样:
1、2元,五回分别赚了一元,一共是两元。
2、3元,此人是后期花了8元,最后收回11元,两个做差,为3元。
3、-2元。壹个人最低购买开销和最高出售价格分别为8元和11元,在第三遍的贸易中这厮以9元卖出,无形中就损失了2元,第二次购进是比最低开销高了两元,所以有损失了2元一共损失4元。在一遍的交易中他赚钱为2元,所以最终她损失了2元。  

代码编写翻译运转后,结果不是想要的可怜数组,而是空值,那是不计其数人就能够想到宏定义了,原因是宏定义是无法获得数组的尺寸。

著名IT企的搞怪面试题

一、晚间,相当于地球的影子。

二、标准答案方向是,让职工艺器材弱者,以博得客户的珍重,最后把计算机要重临。至于写信似乎写作,看各人的抒发了。

三、如下要是, 人是五个长方体, 雨是均匀遍布的, 况兼是笔直的(无风),雨以1滴/秒的快慢飞向人, 然后聚集度为1平方毫米1滴,而人的双肩宽50cm, 厚10cm,1滴雨面积大致1平方毫米, 而厚度大概0.1mm
得出 5 * 60 * 500 * 1 * 1 * 0.01 * 1 g = 1500 g。

四、能够用归咎法推
1、有1只病狗的景观
生病狗的持有者在观看全数别的的狗后,发觉别的狗都以同样状态,那么自然是自身的狗生病,由此首后天就SHOT了本身的狗
2、有三只病狗
率先天病狗主人意识装有人家的狗中有三只病狗,那么有三种大概,本人的狗有病也许本人的没病。要是和煦的没病,那么当天夜间这只狗就能翘翘,不过第二天那只却还健在。因而自身的狗也是病狗,那么拿枪吧。
3、3只病狗
同样,狗主人在外边看来2只病狗,为了分明自个儿的狗的动静,唯有等到第2天夜间,假设那2只都被干掉,那么本身的断定没事,借使第2天清晨尚无听到什么样动静,那么就杀杀杀
4、同理,狗主人看到外面有N-1条狗反常,就能够等待N-1天,在第N-1天夜里若无听到动静,那么和睦的狗正是第N条病狗,在第N天就开枪了。
那题还应当有限量,正是率先肯定里面有病狗,第二不是兼备狗都有病

五、应该是个数列难题,八个颜色是无论的,各人所好。
涂法思路:第一面色彩采纳两种的一种,第二面选择三种的一种……故一共有:3的贰十四回方减3种(3种单纯色)。
删除全数色只有两色的方案有:
2的贰十次方减2(2种单纯色)乘3种(两色的配色方案有3种)。
结果为
3486784398-3145722 = 3483638676种。

六、|A-B| = 21 A-B = 20
等价于
B-A = 21 A-B = 20
此题从理论上无解。

7、此题未有一定能取到最大的那颗钻石的自然方法。从解题上说无解。只可以说用哪些措施取到尽大概大的钻石。那几个点子为:
选取前五层楼都不拿,观望各层钻石的尺寸,做到如数家珍。后五层楼再选择,选取尺寸临近前五层楼出现过最大钻石大小的钻石。

上述为自个儿的答案。希望有人比笔者高明。  

一段看起来很轻巧C代码,预期结果是输出array数组。 #includestdio.h #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[...

可我们把for循环改一下就有不一样的结果了

for(d = -1; d <= ((int)TOTAL_ELEMENTS-2); d++) 

把TOTAL_ELEMENTS强制转变到int类型的,结果就成为了:

图片 1

。。。。。。。。。。那是我们想要的结果,那便是说宏定义没难题。

作者们在原来的main()函数中加一句

int array_length = TOTAL_ELEMENTS;

如此那般和品种强转的成效应该是一模一样的,跟踪监歌后收获上边包车型客车结果:

图片 2

提示是尚未找到符号"TOTAL_ELEMENTS",但是array_length却有值。。。。。。。很郁闷

跟着,大家在for循环里管理数主管度

for(d = -1; d <= ((sizeof / sizeof(array[0])) - 2); d++)

现在,输出结果应当便是大家想要的充裕数组了。可结果吗,啥都没输出。。。。。。。更郁闷

那就持续追踪监视

图片 3

好像都没难题,可是注意它们的体系,是无符号整形(unsigned int),而循环条件d是整形,何况d的开头值为-1,不再无符号整形(unsigned int)定义范围以内,以后总的来说好疑似项指标题目了,那大家将循环条件d的开首值改为0探寻:

#include<stdio.h>#define TOTAL_ELEMENTS (sizeof / sizeof)int array[] = {23,34,12,17,204,99,16};int main(){int d;for(d = 0; d <= (TOTAL_ELEMENTS - 1); d++)printf("%dn", array[d]);return 0;}

出口的结果是

图片 4

结果就是大家想要的。未有展开强制类型调换,也并未展开壹次赋值,只是将循环条件d的开头值定义在了无符号整形(unsigned int)的界定之内。

咱俩再做个小测验

int main(){    int array[] = {23,34,12,17,204,99,16};    int d = -1;    if(d <= (sizeof / sizeof(array[0])) -2)        printf("先有鸡n");    else        printf("先有蛋n");    return 0;}

从代码看来,应该是出口“先有鸡”。可是此次结果又是壮志未酬,输出的是“先有蛋”。

为此建议在写代码的时候尽量制止使用无符号类型,同期也尽量制止有标识类型和呼应的无符号类型进行相比等。

================================================================

自笔者才疏学浅和另外原因,未有开展更加深远的商讨,只是一时候看看的IT面试题,感兴趣简单的测了一晃。

可是追踪监影后,CX0017:错误:没有找到符号"TOTAL_ELEMENTS",依然不曾找到原因,有精晓的大神不要紧指引一二。。。。。。

本文由金沙澳门官网送注册58发布于编程应用,转载请注明出处:风趣的IT面试题

关键词: