不用加减乘除做加法与不用新的变量交换两个变量的值

不用加减乘除做加法

第一步:不考虑进位对每一位相加,0加0的0,0加1的1,1加0的1,1加1的0,这个结果和异或的结果相同

第二步:只有1加1会进位,这个结果和与的结果相同

第三步:将两步的结果相加,重复上面的操作,直到不产生进位

int Add(int num1, int num2)
{
    int sum, carry;
    do
    {
        sum = num1 ^ num2;
        carry = (num1 & num2) << 1;

        num1 = sum;
        num2 = carry;
    }
    while(num2 != 0);

    return num1;
}

不用新的变量交换两个变量的值

方法一

void swap(int num1,int num2)

{

num1=num1+num2;

num2=num1-num2;

num1=num1-num2;

}

方法二

两个相同的数和另一个数异或操作结果为不相同的那个数,相当于0和任何数异或为原来的数本身,0^0 的0,0^1的1

1^1^1为,1,  1^1^0为0, 0^0^1为1, 0^0^0为0,如110与101与110结果为101

void swap(int num1,int num2)

{

num1=num1^num2;

num2=num1^num2;

num1=num1^num2;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码实现两个变量之间的加减乘除运算: ``` #!/bin/bash # 定义两个变量 a=10 b=5 # 加法运算 sum=$(($a + $b)) echo "a + b = $sum" # 减法运算 diff=$(($a - $b)) echo "a - b = $diff" # 乘法运算 prod=$(($a * $b)) echo "a * b = $prod" # 除法运算 quot=$(($a / $b)) echo "a / b = $quot" ``` 在上面的代码中,我们定义了两个变量a和b,并使用$符号来引用它们。然后,我们使用$(( ))语法来执行加减乘除运算,并将结果存储在变量中。最后,我们使用echo命令来输出结果。 注意,除法运算可能会产生小数,但是在bash中,整数除法会向下取整。如果需要进行精确的除法运算,可以使用bc命令。 ### 回答2: 在Linux系统中,可以使用shell脚本来实现对变量之间的加减乘除运算。 首先,我们需要定义两个要进行运算的变量,可以使用read命令从键盘输入,也可以直接在脚本中定义。 #!/bin/bash echo "请输入要进行运算的两个数字:" read num1 num2 然后,我们可以使用if语句来判断用户输入是否为数字,避免出现非法输入。如果输入不合法,则给出提示并退出脚本。 if [ ! -n "$(echo $num1 | sed -n '/^[0-9]\+$/p')" ] || [ ! -n "$(echo $num2 | sed -n '/^[0-9]\+$/p')" ]; then echo "输入不合法,请重输入!" exit fi 接着,我们可以使用case语句来实现加减乘除运算。根据用户输入的运算符不同,选择执行相应的操作。 case $operator in +) result=$(expr $num1 + $num2) ;; -) result=$(expr $num1 - $num2) ;; \*) result=$(expr $num1 \* $num2) ;; /) result=$(awk "BEGIN{printf \"%.2f\", $num1/$num2}") ;; *) echo "运算符不合法!" exit esac 最后,我们输出运算结果,并结束脚本的执行。 echo "运算结果为:$result" 完整的脚本如下: #!/bin/bash echo "请输入要进行运算的两个数字:" read num1 num2 if [ ! -n "$(echo $num1 | sed -n '/^[0-9]\+$/p')" ] || [ ! -n "$(echo $num2 | sed -n '/^[0-9]\+$/p')" ]; then echo "输入不合法,请重输入!" exit fi echo "请输入运算符(+、-、*、/):" read operator case $operator in +) result=$(expr $num1 + $num2) ;; -) result=$(expr $num1 - $num2) ;; \*) result=$(expr $num1 \* $num2) ;; /) result=$(awk "BEGIN{printf \"%.2f\", $num1/$num2}") ;; *) echo "运算符不合法!" exit esac echo "运算结果为:$result" 通过以上步骤,我们就实现了对两个变量之间的加减乘除运算。如果需要更复杂的运算,可以在case语句中添加相应的操作符和运算方法。同时,我们也需要注意处理非法输入的情况,避免脚本出现异常。 ### 回答3: 编写Shell脚本,实现两个变量之间的加减乘除运算,可以通过以下步骤实现: 1. 首先,在Shell脚本中定义两个变量,例如: num1=10 num2=5 可以将这两个变量设置为用户输入的变量,通过read命令实现输入。 2. 接下来,通过echo命令输出用户需要进行的运算类型,例如: echo "请输入要进行的运算类型(+、-、*、/):" 3. 接下来,使用read命令获取用户输入,并使用if语句判断用户输入的运算类型,并执行相应的运算。例如: read operator if [ "$operator" = "+" ]; then result=$(expr $num1 + $num2) echo "加法运算结果为:$result" elif [ "$operator" = "-" ]; then result=$(expr $num1 - $num2) echo "减法运算结果为:$result" elif [ "$operator" = "*" ]; then result=$(expr $num1 \* $num2) echo "乘法运算结果为:$result" elif [ "$operator" = "/" ]; then result=$(expr $num1 / $num2) echo "除法运算结果为:$result" else echo "无效的运算类型!" fi 4. 使用expr命令进行数学计算,并将结果存储在变量$result中,最后使用echo命令输出运算结果。 这样,就可以实现Shell脚本中两个变量之间的加减乘除运算,用户只需要输入变量和运算类型,就可以得到运算结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值