吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → 不使用任何运算符求两个数之和

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

来源:网络 | 更新时间:2022-01-10 20:55:51
编写一个程序,在不使用任何运算符的情况下求正整数之和。只允许使用 printf()。不能使用其他库函数。 解决方案 这是一个技巧问题。我们可以使用 printf() 来查找两个数字的总和,因为 printf() 返回打印的字符数。printf() 中宽度字段可用于求两个数之和。我们可以使用 '*' 表示输出的最小宽度。例如,在语句“printf(“%*d”, width, num);”中,用指定的“width”代替*,并在指定的最小宽度内打印“num”。如果 'num' 中的位数小于指定的 'width',则输出用空格填充。如果位数更多,则按原样打印输出(不截断)。在下面的程序中,add() 返回 x 和 y 的总和。它在使用 x 和 y 指定的宽度内打印 2 个空格。所以打印的总字符数等于 x 和 y 的总和。这就是为什么 add() 返回 x+y 的原因。
#include <iostream>
using namespace std;

int add(int x, int y)
{
return printf("%*c%*c", x, ' ', y, ' ');
}

// Driver code
int main()
{
printf("Sum = %d", add(3, 4));
return 0;
}
#include <stdio.h>

int add(int x, int y)
{
return printf("%*c%*c", x, ' ', y, ' ');
}

// Driver code
int main()
{
printf("Sum = %d", add(3, 4));
return 0;
}
输出: 
 Sum = 7
时间复杂度: O(1) 辅助空间: O(1) 输出是七个空格,后跟“Sum = 7”。我们可以通过使用回车来避免前导空格。。以下程序打印输出时不带任何前导空格。
#include <iostream>
using namespace std;

int add(int x, int y)
{
return printf("%*c%*c", x, 'r', y, 'r');
}

// Driver code
int main()
{
printf("Sum = %d", add(3, 4));
return 0;
}
#include <stdio.h>

int add(int x, int y)
{
return printf("%*c%*c", x, 'r', y, 'r');
}

// Driver code
int main()
{
printf("Sum = %d", add(3, 4));
return 0;
}
输出: 
      Sum = 7
时间复杂度: O(1) 辅助空间: O(1) 另一种方法: 
#include <iostream>
using namespace std;

int main()
{
int a = 10, b = 5;
if (b > 0) {
while (b > 0) {
a++;
b--;
}
}
if (b < 0) { // when 'b' is negative
while (b < 0) {
a--;
b++;
}
}
cout << "Sum = " << a;
return 0;
}
#include <stdio.h>

int main()
{
int a = 10, b = 5;
if (b > 0) {
while (b > 0) {
a++;
b--;
}
}
if (b < 0) { // when 'b' is negative
while (b < 0) {
a--;
b++;
}
}
printf("Sum = %d", a);
return 0;
}

// Java code
class GfG {

public static void main(String[] args)
{
int a = 10, b = 5;
if (b > 0) {
while (b > 0) {
a++;
b--;
}
}
if (b < 0) { // when 'b' is negative
while (b < 0) {
a--;
b++;
}
}
System.out.println("Sum is: " + a);
}
}
# Python 3 Code

if __name__ == '__main__':

a = 10
b = 5

if b > 0:
while b > 0:
a = a + 1
b = b - 1
if b < 0:
while b < 0:
a = a - 1
b = b + 1

print("Sum is: ", a)
// C# code
using System;

class GFG {
static public void Main()
{
int a = 10, b = 5;
if (b > 0) {
while (b > 0) {
a++;
b--;
}
}
if (b < 0) { // when 'b' is negative
while (b < 0) {
a--;
b++;
}
}
Console.Write("Sum is: " + a);
}
}
<?php
// PHP Code
$a = 10;
$b = 5;

if ($b > 0) {
while($b > 0)
{
$a++;
$b--;
}
}

if ($b < 0) {
while($b < 0)
{
$a--;
$b++;
}
}


echo "Sum is: ", $a;
<script>

// Javascript program for the above approach

// Driver Code

let a = 10, b = 5;
if (b > 0) {
while (b > 0) {
a++;
b--;
}
}
if (b < 0) { // when 'b' is negative
while (b < 0) {
a--;
b++;
}
}
document.write("Sum = " + a);

</script>
输出: 
sum = 15
时间复杂度: O(b) 辅助空间: O(1)  

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com