找到两个数字的总和而不使用任何运算符

时间:2014-02-01 22:06:00

标签: c

在一次采访中,我被要求编写一个C程序来查找两个数字的总和而不使用任何运算符。我认为可以使用printf的返回值来完成,但我不知道如何做到这一点。

这可能吗?

5 个答案:

答案 0 :(得分:6)

这是一个糟糕的面试问题。真。它根本不评估任何相关技能。

那说,这就是答案:

int n1 = /* ... */;
int n2 = /* ... */
int sum = printf("%*s%*s", n1, "", n2, "");

%*s中的printf表示“打印字符串,但打印的最小字符数等于作为参数传入的值。”这可以通过打印n1个字符,然后打印n2个字符,并使用printf返回打印的字符总数这一事实。 printf将始终精确打印n1 + n2个字符,因为空字符串的长度为0,因此将始终使用最大填充。这可能是我想到的最糟糕的添加数字的方式 - 运行时间是Θ(n1 + n2),在此过程中,它会在屏幕上打印出数以万计的空白。

但是,是的。这是一个非常糟糕的面试问题,你应该对在这个作为面试问题的地方工作有严重的担忧。他们的招聘过程非常严重。

希望这有帮助!

答案 1 :(得分:2)

这可能是一个棘手的问题,让你编写一个程序,要求用户输入答案,然后显示它。

答案 2 :(得分:2)

int a = 4, b = 5, sum;
FILE * f=fopen("tmp","w");

char *buf_a = calloc(a,1);
char *buf_b = calloc(b,1);
fwrite(buf_a,a,1,f);
fwrite(buf_b,b,1,f);
sum = ftell (f);

printf("%d + %d = %d\n", a, b, sum);

答案 3 :(得分:2)

int main()
{
    int x = 11;
    int y = 22;
    int sum = printf("%*c%*c",  x, ' ',  y, ' ');
    printf("Sum = %d", sum);
    return 0;
}

答案 4 :(得分:0)

使用printf中的对数和指数函数,我们可以对两个数求和

代码:

#include <bits/stdc++.h> 
using namespace std; 

 
int main(void)
{
    int a = 8, b = 6;
 
    printf("%g\n", log(exp(a) * exp(b)));
 
    return 0;
}