在一次面试中,我被要求写一个C程序,在不使用任何运算符的情况下求两个数字的和,我认为可以使用printf的返回值来完成,但我不知道如何做到这一点。这可能吗?
printf
kx1ctssn1#
这是一个糟糕的面试问题。真的。它根本没有评估任何相关的技能。也就是说,答案如下:
int n1 = /* ... */; int n2 = /* ... */ int sum = printf("%*s%*s", n1, "", n2, "");
printf中的%*s表示“打印字符串,但使打印的最小字符数等于作为参数传入的值。”并使用printf返回打印的字符总数的事实。printf将始终精确打印n1 + n2个字符,因为空字符串的长度为0,因此将始终使用最大填充。这可能是我能想到的最糟糕的添加数字的方法-运行时为Θ(n1 + n2),在此过程中,它将大量空白打印到屏幕上。但是,是的。这是一个可怕的面试问题,你应该对在一个把这个作为面试问题的地方工作有严重的担忧。他们的招聘过程中有严重的问题。希望这有帮助!
%*s
n1 + n2
qv7cva1a2#
这可能是一个让你编写一个程序,要求用户输入答案,然后显示它的技巧问题。
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);
bbuxkriu4#
int main() { int x = 11; int y = 22; int sum = printf("%*c%*c", x, ' ', y, ' '); printf("Sum = %d", sum); return 0; }
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; }
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; }
6条答案
按热度按时间kx1ctssn1#
这是一个糟糕的面试问题。真的。它根本没有评估任何相关的技能。
也就是说,答案如下:
printf
中的%*s
表示“打印字符串,但使打印的最小字符数等于作为参数传入的值。”并使用printf
返回打印的字符总数的事实。printf
将始终精确打印n1 + n2
个字符,因为空字符串的长度为0,因此将始终使用最大填充。这可能是我能想到的最糟糕的添加数字的方法-运行时为Θ(n1 + n2),在此过程中,它将大量空白打印到屏幕上。但是,是的。这是一个可怕的面试问题,你应该对在一个把这个作为面试问题的地方工作有严重的担忧。他们的招聘过程中有严重的问题。
希望这有帮助!
qv7cva1a2#
这可能是一个让你编写一个程序,要求用户输入答案,然后显示它的技巧问题。
0ve6wy6x3#
bbuxkriu4#
2nbm6dog5#
答案如下:
t30tvxxf6#
使用printf中的对数和指数函数,我们可以执行两个数字的总和
验证码: