淡泊明志 宁静致远
分类: C/C++
2006-12-27 15:32:27
【C语言库函数源代码】
【本程序在Dev C++ 4.9.9.2 下编译通过】
/*
对两个整数相除,返回类型为div_t,
在stdlib.h头文件中定义。
typedef struct
{
int quot;
int rem;
} div_t;
quot存储的是商(quotient)。
rem 存储的是余数(remainder)。
算法和ldiv()函数非常类似。
这个函数并不进行分母(除数)为0的检测。
*/
typedef struct
{
int quot;
int rem;
} div_t;
div_t my_div(int num, int denom)
{
div_t r;
r.quot = num / denom;
r.rem = num % denom;
/*
在我们普通PC(Intel架构系列的CPU)上
可以正常运行。但是我们不知道其他的机器
是怎么来处理整除和取余运算的,所以还是
要写出来错误处理代码。
被除数为正,余数为负,商加1,余数减除数。
被除数为负,余数为正,商减1,余数加除数。
*/
if (num >=
0 && r.rem < 0)
{
++r.quot;
r.rem -= denom;
}
else if (num < 0 && r.rem > 0)
{
--r.quot;
r.rem += denom;
}
return (r);
}
int main()
{
div_t t;
t = my_div(0x7FFFFFFF,2);
printf("Quotient = %d\tRemainder =
%d\n",t.quot,t.rem);
system("pause");
return 0;
}