zoukankan      html  css  js  c++  java
  • (笔试题)不用除法操作符,实现两个整数的除法

    题目:

    如题所示

    思路:

    与上一题要求不一样的是,这里是整数的除法,而不仅仅是正整数,因此需要对输入的两个数的正负性进行判断

    代码:

    #include <iostream>
    
    using namespace std;
    
    int myDiv(int a,int b){
        if(a==0)
            return 0;
        if(a==b)
            return 1;
        if(b==1)
            return a;
    
        bool sign=true; // indicate +/-1
        int ans=0;
    
        // a>0,b<0
        if(a>0){
            if(b<0){
                if(a+b<0)
                    return 0;
                sign=false;
                b=-b;
            }
        }
        // a<0,b>0
        else if(b>0){
            if(a+b>0)
                return 0;
            sign=false;
            a=-a;
        }
        // a<0,b<0
        else{
            if(a-b>0)
                return 0;
            sign=true;
            a=-a;
            b=-b;
        }
    
        int x,y;
        while(a>=b){
            x=b;
            y=1;
            while(a>=(x<<1)){
                x<<=1;
                y<<=1;
            }
            a-=x;
            ans+=y;
        }
        return sign?(ans):(-ans);
    }
    
    
    int main()
    {
        unsigned int a=100;
        unsigned int b=3;
        cout << myDiv(-a,b) << endl;
        cout << myDiv(a,-b) << endl;
        cout << myDiv(-a,-b) << endl;
        cout << myDiv(a,b) << endl;
        return 0;
    }
    

    运行结果:

  • 相关阅读:
    if语句
    操作列表
    列表
    数据类型(不全)
    windows安装mysql
    hadr启动报错码
    db2主备hadr部署
    java--遍历字符个数
    java--装饰类
    java--继承&接口
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4575192.html
Copyright © 2011-2022 走看看