现在 C 语言的面试题,越来越有点变态了,譬如下面我收集的两道推理题。。。。
一:推理题。
1、 一个大院子里住了 50 户人家,每家都养了一条狗,有一天他们接到通知说院子里有
狗生病了,并要求所有主人在发现自己家狗生病的当天就要把狗枪杀掉。然而所有主人和他
们的狗都不能够离开自己的房子,主人与主人之间也不能通过任何方式进行沟通,他们能做
的只是通过窗户观察别人家的狗是否生病从而判断自己的狗病否。(就是说,每个主人只能
看出其他 49 家的狗是不是生病,单独看自己的狗是看不出来的)
第一天没有枪声,第二天还是没有枪声,第三天传出一阵枪声,问有多少条狗被枪杀。
2、有四个人(A,B,C 和 D)要在一个月黑风高的夜里过一个很长的独木桥。桥只能
一次乘载两个人,就是说每次最多两人同时过桥。过桥要用手电筒,而这四个人只有一只手
电筒,也就是说两人共用这只手电筒过桥后,其中一人必须带着手电筒返回(没有其他方法),
否则其他人就不能再过了。这四个人由于年龄和身体状况的差异,每个人过桥所需要的时间
不同:A 需要 1 分钟,B 需要 2 分钟,C 需要 5 分钟,D 需要 10 分钟。由于共用一只手电
筒的原因,当两人一同过桥时,过桥的时间是以其中慢的一人为准,比如 A 和 C 一起过桥
要用 5 分钟。
现在问:要所有人过桥,最短要多少分钟,如何安排他们的过桥顺序?
二:编程题
1,
用 C 语言实现一个 revert 函数,它的功能是将输入的字符串在原串上倒序后返回。
2
用 C 语言实现函数 void * memmove(void *dest,const void *src,size_t n)。memmove 函数的功
能是拷贝 src 所指的内存内容前 n 个字节到 dest 所指的地址上。
3
用两个栈实现一个队列的功能?要求给出算法和思路!
4
已知链表的头结点 head,写一个函数把这个链表逆序 void reverse(node*& head)
5
写一个函数找出一个整数数组中,第二大的数 int find_sec_max( int data[] , int count)