回 帖 发 新 帖 刷新版面

主题:一次面试时的失误

计算两数和并显示,“不能用数组,结构体,多个变量”也就是说只能用一个变量!其他什么都不可以用下面是我做的结果:

int main(int argc, char* argv[])
{
int a = 0;
__asm
{
   xor eax,eax
   mov ah,05
   mov al,02
   add al,ah
   xor ah,ah
   mov [ebp-4],eax
   
}
printf("%d\r\n",a);
return 0;
}

回复列表 (共5个回复)

沙发

float a[2] = 0;
scanf("%f",&a[0]);
fflush(stdin);
scanf("%f",&a[1]);
printf("%f\n",a[0]+a[1]);

板凳


都说了不能用数组的,上面是我面试完了在回家的路上想起来写的!!晚了哈

3 楼

不知这样算不算啊
[code=c]
#include <stdio.h>

int main()
{
    long a;

    *((short *)&a) = 5;
    *((short *)&a + 1) = 2;

    a = *((short *)&a) + *((short *)&a + 1);
    printf("%d\n", a);

    return 0;
}[/code]

4 楼


呵呵 算的

5 楼

第一想法就是只能用长字节的一个变量,把这个变量按位分成几个变量去操作就行了.
楼主大牛啊,晕,竟然能想到用汇编用里的高位和低位......

我来回复

您尚未登录,请登录后再回复。点此登录或注册