C语言 不使用任何运算符求两个数之和

xe55xuns  于 2023-04-19  发布在  其他
关注(0)|答案(6)|浏览(107)

在一次面试中,我被要求写一个C程序,在不使用任何运算符的情况下求两个数字的和,我认为可以使用printf的返回值来完成,但我不知道如何做到这一点。
这可能吗?

kx1ctssn

kx1ctssn1#

这是一个糟糕的面试问题。真的。它根本没有评估任何相关的技能。
也就是说,答案如下:

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

printf中的%*s表示“打印字符串,但使打印的最小字符数等于作为参数传入的值。”并使用printf返回打印的字符总数的事实。printf将始终精确打印n1 + n2个字符,因为空字符串的长度为0,因此将始终使用最大填充。这可能是我能想到的最糟糕的添加数字的方法-运行时为Θ(n1 + n2),在此过程中,它将大量空白打印到屏幕上。
但是,是的。这是一个可怕的面试问题,你应该对在一个把这个作为面试问题的地方工作有严重的担忧。他们的招聘过程中有严重的问题。
希望这有帮助!

qv7cva1a

qv7cva1a2#

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

0ve6wy6x

0ve6wy6x3#

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);
bbuxkriu

bbuxkriu4#

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

2nbm6dog5#

答案如下:

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int x, y, sum;
    x = 10, y = 5;
    sum = printf("%*c%*c", x, ' ', y, ' ');

    printf("Sum of x and y is: %d\n", sum);

    return 0;
}
t30tvxxf

t30tvxxf6#

使用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;
}

相关问题