编程实现两个正整数的除法

来源:互联网 发布:台服手游哪个软件下载 编辑:程序博客网 时间:2024/05/21 04:39
编程实现两个正整数的除法,当然不能用除法操作符。
// return x/y.
int div(const int x, const int y) 
{
  ....

}

根据题目,我们知道x/y的结果是一个整数,只是一个整数的话需要考虑的东西就比较少了。

当然如果是小数的话也是可以做的,我们可以借鉴利用两点确定一元二次函数根的方法,这个大家可自行思考,下面贴上这题的代码。

利用相减的方法,这个方法有一个非常不好的地方个人觉得,比如x=10000000,y=1;这样的话就要循环10000000,效率不好。

代码如有错误,或者还有更好的方法,还请各位道友能够批评指正。

#include<stdio.h>#include<math.h>/*int div( const int x, const int y){//如果x的绝对值小于y直接返回0if( abs(x)<abs(y))return 0;int result=0;if( x<0 ){if( y<0 ){for(; x-result*y<=0  ; result++);}else{for(; x-result*y<=0 ; result--);}}else{if( y<0 ){for(; x-result*y>=0; result--);}else{for(; x-result*y>=0; result++);}}if( result<0)return result+1;return result-1;}*///用这个方法的话,直接用x,y进行比较计算,看起来会比较麻烦//下面我们可以通过 x,y的绝对值来计算,这样就只需要求一次了,看起来很简洁int div( const int x, const int y){int x_p=abs(x);int y_p=abs(y);if(x_p<y_p)return 0;int result=1;for(; x_p-y_p*result>=0; result++);//为什么要 ‘--’呢? 这是因为for的判断条件result--;//直接这样判断有风险,万一 x*y 溢出了就不好玩了if(x*y<0)return -result;return result;}int main(){printf("%d \n",div(-2,-1));printf("%d \n",div(-2,41));printf("%d \n",div( 4,6));printf("%d \n",div(-9,-6));printf("%d \n",div(2,-1));getchar();    return 0;}


0 0
原创粉丝点击