描述: |
说明:
|
#include <stdlib.h>
#include <string.h>
#include <string>
#include <stdio.h>
#include "oj.h"
using namespace std;
/***********************************************************************
Description : 整数相除。
Input : unsigned int dividend :被除数,取值为无符号整数。
unsigned int divisor: 除数,取值为无符号整数。
Output : Char *pResult : 运算结果。
Return Value : 0:成功; -1:失败;
***********************************************************************/
int IntegerDivision (unsigned int dividend,
unsigned int divisor,
char *pResult)
{
/*在这里完成代码*/
if (divisor == 0 || pResult == NULL)
{
return -1;
}
int yushu = dividend % divisor;
/*当可以整除的时候*/
if (yushu == 0)
{
unsigned int ret = dividend / divisor;
/*判断结果是否超过10位*/
if (ret > 999999999)
{
return -1;
}
sprintf_s(pResult,10, "%d", ret);
return 0;
}
/*当不能整除的时候*/
else
{
double ret = (double)dividend / (double)divisor;
char retchar[50] = { 0 };
sprintf_s(retchar, "%.5f", ret);
/*找到小数点的位置*/
string ss(retchar);
int pos = ss.find_first_not_of('.');
if (pos > 10)
{
return -1;
}
/*去掉小数点后面的0*/
int len = ss.size() - 1;
bool iszero = true;
while (iszero)
{
if (retchar[len] == '0')
{
len--;
}
else
{
iszero = false;
}
}
int index = 0;
/*判断小数点是不是最后一个*/
len = (retchar[len] == '.') ? (len - 1) : len;
for (; index <= len; index++)
{
pResult[index] = retchar[index];
}
pResult[len + 1] = '\0';
}
return 0;
}