zkkpkk 发表于 2008-1-10 23:22:07

无解的题目......

听说是吉林大学计算机2000级补考题,此题不会不给及格!
2002年发在CSDN一直无解......
计算两正整数的积。   
要求:不许使用任何运算符!   
注:本题为吉林大学计算机2000级补考题,此题不会不给及格!   
运算符包括:   
()   
[]   
->   
.   
!   
~   
++   
--   
-(负号)   
*(指针)   
&   
SIZEOF   
*(乘法)   
/   
%   
+   
-(减法)   
<<   
>>   
<   
<=   
>   
>=   
==   
!=   
&   
^   
|   
&&   
||   
?   :   
=   
+=   
-+   
*=   
/=   
%=   
>>=   
<<=   
&=   
?   :   
=   
+=   
-+   
*=   
/=   
%=   
>>=   
<<=   
&=   
^=   
|=   
分析题目:位运算,连<<、>>、^......众都封了还位运算个鬼;聪明人可能想起来套汇编

int (int m , int n)
{
asm mov ax,0
asm mov cx,m         /*用寄存器CX计数*/
s:          /*循环计算m*n的值,算法为m个n相加*/
asm add ax,n
asm loop s
return (_AX);      /*程序返回*/
}
套了汇编就简单H啦进寄存器,用循环的加法替代乘法OK
看似解决了但是“(”和“)”也是算符范围内的,所以用宏定义替代“(”
#define _41 )      /*这里两行中的)(并不是作为运算符,而是类似于标识符的东西,所以没有违返题目的意思*/
#define _40 (
int _40 int m , int n _41
{
asm mov ax,0
asm mov cx,m         /*用寄存器CX计数*/
s:          /*循环计算m*n的值,算法为m个n相加*/
asm add ax,n
asm loop s
return _40 _AX _41;      /*程序返回*/
}
史上最别扭的代码......
但是怎么输入输出呢?
scanf()要用到取地址“&”
流对象cin和cout的<<和>>是operator,又引出了重载运算符是算运算符还是函数的问题了......
无解至今......

水哥 发表于 2008-1-10 23:23:17

火星文~~:mad1

ye.hai 发表于 2008-1-10 23:23:24

沙发                        :huffy1

xinbb 发表于 2008-1-10 23:24:14

:titter1 地毯

just-do-it 发表于 2008-1-11 07:48:00

:smile1 地板

用一生来下载你 发表于 2008-1-11 08:34:02

:biggrin1
什么什么啊
页: [1]
查看完整版本: 无解的题目......