华为机试题: 整数相除
2016-02-16 11:16
246 查看
描述: | 实现接口: /*********************************************************************** 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 <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; }
相关文章推荐
- iOS 给label加下划线或者中划线
- 一个菜鸟程序员的游戏开发心得
- Visual Studio之Nuget(服务器)
- 使用Maven创建web项目
- 50道线程面试题
- MFC环境下Start&Pause&Stop操作
- Git学习笔记(删除文件)
- 关于java发送邮件的一个示例
- 宇您同在 共创未来
- Xcode 7 error: “Missing iOS Distribution signing identity for …”
- android中button点击频率控制
- host字段变复杂了
- ANDROID_MARS学习笔记_S01原始版_014_WIFI
- NSLog的格式
- Docker 常用命令
- spring使用自动注解在JUNIT下测试
- Ubuntu环境下编译ACE
- Hadoop 2.7.2
- 安全测试学习笔记一(Cookie&Session)
- POJ-1860