【C语言】不使用+-*/实现两个数之和

//不使用+-*/实现两个数之和
#include <stdio.h>
int add(int num1, int num2)
{
	int sum, car;
	do
	{
		sum = num1^num2;
		car = (num1&num2) >> 1;
		num1 = sum;
		num2 = car;
	} while (num2 != 0);
	return num1;
}
int main()
{
	int a = 1;
	int b = 20;
	printf("%d\n", add(a, b));
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-31 05:33:18

【C语言】不使用+-*/实现两个数之和的相关文章

【c语言】求斐波那契数列的前40个数。特点,第1,2个数为1,从第三个数开始,该数是前面两个数之和

// 求斐波那契数列的前40个数.特点,第1,2个数为1,从第三个数开始,该数是前面两个数之和 #include <stdio.h> int main() { int a = 1; int b = 1; int c,i; printf("%d\t%d\t",a,b); for(i = 3; i <= 40; i++) { c = a + b; printf("%d\t",c); a = b; b = c; } printf("\n&quo

【算法C++】检测数组里是否有两个数之和等于某个数

问题: 检测数组里是否有两个数之和等于某个数 解决方法一:先将数组排序,然后从两头开始遍历 数组排序后,从左端开始取最小值,从右端取最大值, 判断两者之和与目标的大小: 1. 等于时,输出两个数: 2. 大于时,右端移到第2个数,继续判断: 3. 小于时,左端移到第2个数,继续判断. #include <iostream> #include <string> #include <algorithm> using namespace std; void fun1(int

关于数字的智力题-两个数之和与之积

题目: 已知两个1~30之间的数字,甲知道两数之和,乙知道两数之积.   甲问乙:"你知道是哪两个数吗?"乙说:"不知道":   乙问甲:"你知道是哪两个数吗?"甲说:"也不知道":   于是,乙说:"那我知道了":   随后甲也说:"那我也知道了":   这两个数是什么? 解答: 隐含条件:乙不知道答案,则说明这两个数之积不是素数.当甲回答说不知道答案后,乙马上知道了答案,说明乙能利用

c语言函数实现交换两个数的值

代码: 1 #include <stdio.h> 2 3 void swap(int x,int y) 4 { 5 int temp; 6 7 temp = x; 8 x = y; 9 y = temp; 10 printf("In swap: x = %d,y = %d\n",x,y); 11 } 12 13 void swap_with_pt(int * x,int * y) 14 { 15 int temp; 16 17 temp = *x; 18 *x = *y;

求两个数之和

求两个数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] int* twoSum(int* nums, int numsSize, int target, int*

两个数之和

来源力扣: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 我写的是: class Solution { public: vector<int> twoSum(vect

Java之求数组中两个数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 通过使用空间换取时间,降低时间复杂度时间复杂度O(n)空间复杂度o(n) public int[] twoSum(int[] nums, int

从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式, 输出杨辉三角形的前n行。请采用循环控制语句来实现。 (三角形腰上的数为1,其他位置的数为其上 一行相邻两个数之和。)

package com.homework.zw;//此题没有太大难度,不再写注释import java.util.Scanner;public class work4 { public static void main(String[] args)  {   Scanner sc = new Scanner(System.in);         System.out.println("请输入一个正整数n");         int n = sc.nextInt();       

C语言求两个数中最大公约数

在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下: #include<stdio.h> int main() {      int num1,num2,temp,i;      scanf("%d%d",&num1,&num2);      if(num1>num2)      {            temp=num1