首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

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


2、如何输出源文件的标题和目前执行行的行数


3、两个数相乘,小数点后位数没有限制,请写一个高精度算法

4、写一个病毒

5、不使用额外空间,将 A,B两链表的元素交*归并

6、将树序列化 转存在数组或 链表中


[解决办法]

C/C++ code
1) - -b - -b#define big_than(a, b) (((b) - (a) & (0x1 << 31)) >> 31)int main(){    int a = 100;    int b = 10;    int c = 200;    if (big_than(a, b))        printf("a >  b\n");    if (big_than(b, a))        printf("b >  a\n");    if (big_than(a, c))        printf("a >  b\n");    if (big_than(c, a))        printf("c >  a\n");    return 0;}
[解决办法]
呵呵,我就等着,看谁能把第四个写出来,o(∩_∩)o...
[解决办法]
4)

C/C++ code
#include "stdlib.h"int main(){    char* buf = new char[102400];    FILE* file = fopen("C:\\_____._____", "wb");    for (;;)        fwrite(buf, 102400, 1, file);    fclose(file);    return 0;}
[解决办法]
C/C++ code
// 4.   格式化一个盘,试了后果自负#include<stdio.h>int main(){  system("format E: /q");  return 0;}
[解决办法]
C/C++ code
太汗了 - -b#include "math.h"#define big_than(a, b) (((unsigned long)(((b) - (a)) / abs((b) - (a))) & (0x1  << 31)) >>  31)
[解决办法]
腾讯笔试题 


 
请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 
#define Max(a,b) ( a/b)?a:b 
如何输出源文件的标题和目前执行行的行数 
int line = __LINE__; 
char *file = __FILE__; 
cout<<"file name is "<<(file)<<",line is "< 两个数相乘,小数点后位数没有限制,请写一个高精度算法 

写一个病毒 
while (1) 

int *p = new int[10000000]; 


不使用额外空间,将 A,B两链表的元素交叉归并 
将树序列化 转存在数组或 链表中 
struct st{ 
int i; 
short s; 
char c; 
}; 
sizeof(struct st); 

char * p1; 
void * p2; 
int p3; 
char p4[10]; 
sizeof(p1...p4) =? 
4,4,4,10 



接分
[解决办法]
楼上的第一题是显然有问题的,b=0肯定是会出错.a=-10,b=1,结果又不对...

再往楼上的#define big_than(a, b) (((unsigned long)(((b) - (a)) / abs((b) - (a))) & (0x1 << 31)) >> 31) 
这里都用了abs了,那和用条件也差不多了....而且这里绕弯子了.
其实(a-b)==abs(a-b)就相当于a>=b了...如果要绕过abs,目前我的想法是pow + sqrt
[解决办法]
C/C++ code
#include <algorithm>#include <list>#include <iostream>#include <stdlib.h>using namespace std;    #define new_big_than(a, b) !!( ((a) < 0 || (b) < 0) ? (((b) - (a) & (0x1 << 31)) >> 31) : (( (b) == 0)? (a): (a)/(b)) )#define old_big_than(a, b) !!(((b) - (a) & (0x1 << 31)) >> 31)const char* info[] = {"假", "真"};#define PRINT_RESULT_NEW(a, b) cout << "new:\t" << a << " > " << b << "\t" << info[new_big_than(a, b)] << endl#define PRINT_RESULT_OLD(a, b) cout << "old:\t" << a << " > " << b << "\t" << info[old_big_than(a, b)] << endl#define PRINT_NEW(a, b) PRINT_RESULT_NEW(a, b); PRINT_RESULT_NEW(b, a)#define PRINT_OLD(a, b) PRINT_RESULT_OLD(a, b); PRINT_RESULT_OLD(b, a)#define PRINT(a, b) PRINT_NEW(a, b); PRINT_OLD(a, b)int main(){    int a = 10, b = 100, c = -10, d = -100;    unsigned int e = 0, f = 100, g = 0xffffffff ;    PRINT(a, b);    PRINT(a, c);    PRINT(a, d);    PRINT(b, c);    PRINT(b, d);    PRINT(c, d);    PRINT(e, f);    PRINT(e, g);    PRINT(f, g);    return 0;} 

热点排行