整数相除

  • /***********************************************************************

  •  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); 

说明:

  1. Char *pResult的空间由调用者提供,五位小数,返回失败;小数部分超出五位,四舍五入

  2. 存储结果以字符串形式显示,整数和小数部分需加上小数点。如结果为2.05,则输出的结果为”2.05”。

我的答案只能是五位及以下的整数相除,否则会有bug,谁知道改进的话,求指导

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值