-
/***********************************************************************
-
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);
说明:
-
Char *pResult的空间由调用者提供,五位小数,返回失败;小数部分超出五位,四舍五入;
-
存储结果以字符串形式显示,整数和小数部分需加上小数点。如结果为2.05,则输出的结果为”2.05”。
#include <iostream>
#include <stdlib.h>#include <string>
using namespace std;
int IntegerDivision (unsigned int dividend, unsigned int divisor,char *pResult)
{
/*在这里完成代码*/
if (dividend)
{
int zen;
int chu = dividend * 100000;
zen = chu/divisor;
int fMod;
fMod = (chu%divisor*10) / divisor;
if (fMod > 5)
{
zen++;
}
int m = 0;
while (zen % 10 == 0 && m < 5)
{
zen = zen / 10;
m = m + 1;
}
char num[18];
itoa(zen, num, 10);
int d = strlen(num);
if (m == 5)
{
if (d > 10)
{
return -1;
}
else
{
num[d] = '\0';
pResult = num;
for (int k = 0; k <= d; k++)
{
cout << pResult[k];
}
return 0;
}
}
else
{
if (d - (5 - m) > 10)
{
return -1;
}
else
{
char num1[18];
for (int g = 0; g < d; g++)
{
num1[g] = num[g];
}
num1[d - (5 - m)] = '.';
for (int f = d - (5 - m); f < d; f++)
{
for (int h = f + 1; h < d+1; h++)
{
num1[h] = num[f];
}
}
num1[d+1] = '\0';
pResult = num1;
// for (int t = 0; t <= d+1; t++)
// {
// cout << pResult[t];
// }
return 0;
}
}
}
else
return -1;
}
int main()
{
char Result[100] = "0";
IntegerDivision(12000, 2, Result);
return 0;
}