腾讯的JAVA笔试的问题帮忙回答下

来源:百度知道 编辑:UC知道 时间:2024/06/11 09:44:40
1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
2、如何输出源文件的标题和目前执行行的行数
3、两个数相乘,小数点后位数没有限制,请写一个高精度算法
4、写一个病毒
5、有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?

1.请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

答案:

#define max(a,b) ((((long)((a)-(b)))&0x80000000)?b:a)

若a > b ,则a-b的二进制最高位为0,与上任何数还是0,所以大数为a;

否则,a-b为负数,二进制最高位为1,与上0x80000000(最高位为1其他为0)之后为1,
所以此时的大数为b.
2.如何输出源文件的标题和目前执行行的行数?

答案: printf("The file name: %d\n", __FILE__);

printf("The current line No:%d\n", __LINE__);

ANSI C标准预定义宏:

__LINE__

__FILE__

__DATE__

__TIME__

__STDC__ 当要求程序严格遵循ANSI C标准时该标识符被赋值为1

__cplusplus__ 当编写C++程序时该标识符被定义
3.不会
4.while(1)
{
int *p = new int[10000];
}
5.答案:A & B -->2 mins

1 mins <-- A

C & D -->10 mins

2 mins <-- B

A & B --> 2 mins

一共 2 + 1 + 10 + 2 + 2 = 17 mins

希望对你有帮助。

ls的不是java的代码吧