找回密码
 入驻
搜索
查看: 249|回复: 5

无解的题目......

[复制链接]
发表于 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
回复

使用道具 举报

发表于 2008-1-10 23:23:24 | 显示全部楼层
沙发                        :huffy1
回复

使用道具 举报

发表于 2008-1-10 23:24:14 | 显示全部楼层
:titter1 地毯
回复

使用道具 举报

发表于 2008-1-11 07:48:00 | 显示全部楼层
:smile1 地板
回复

使用道具 举报

发表于 2008-1-11 08:34:02 | 显示全部楼层
:biggrin1
什么什么啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入驻

本版积分规则

QQ|Archiver|手机版|小黑屋|思明论坛

GMT+8, 2024-9-28 09:32 , Processed in 0.013088 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表