博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
华为 题目大数据计算器
阅读量:6268 次
发布时间:2019-06-22

本文共 2137 字,大约阅读时间需要 7 分钟。

2.大数加减

 

问题描述:

 

在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下:

 

9876543210 + 1234567890 = ?

 

让字符串 num1="9876543210",字符串 num2="1234567890",结果保存在字符串 result = "11111111100"。

 

-9876543210 + (-1234567890) = ?

 

让字符串 num1="-9876543210",字符串 num2="-1234567890",结果保存在字符串 result = "-11111111100"。

 

要求编程实现上述高精度的十进制加法。

 

要求实现函数:

 

void add (const char *num1, const char *num2, char *result)

 

【输入】num1:字符串形式操作数1,如果操作数为负,则num1[0]为符号位'-';num2:字符串形式操作数2,如果操作数为负,则num2[0]为符号位'-'

 

【输出】result:保存加法计算结果字符串,如果结果为负,则result[0]为符号位。

 

注:

 

I、 当输入为正数时,'+'不会出现在输入字符串中;当输入为负数时,'-'会出现在输入字符串中,且一定在输入字符串最左边位置;

 

II、输入字符串所有位均代表有效数字,即不存在由'0'开始的输入字符串,比如"0012", "-0012"不会出现;

 

III、要求输出字符串所有位均为有效数字,结果为正或0时'+'不出现在输出字符串,结果为负时输出字符串最左边位置为'-'。

示例

输入:num1 = "580"

num2 = "-50"

输出:result = "530"

输入:num1 = "580"

 

num2 = "-600"

 

输出:result = "-20"

 

#include 
#include
//【输入】num1:字符串形式操作数1,如果操作数为负,则num1[0]为符号位'-';num2:字符串形式操作数2,如果操作数为负,则num2[0]为符号位'-' 【输出】result:保存加法计算结果字符串,如果结果为负,则result[0]为符号位。 void change(char * str){ int num =strlen(str); int i ; int tmp; for(i = 0;i <= (num/2 -1 ); i++) { tmp = str[i]; str[i] = str[num - i -1]; str[num -1 -i] = tmp; } }void jinwei(char *str){ int num = strlen(str); if(str[num-1] !='-') { for(int i = 0;i
= 0x3a) { str[i+1]++; str[i]= str[i] - 10; if(i == num-1) { str[i+1] = '1'; } } } } else { for(int i = 0;i
= 0x3a) { str[i+1]++; str[i]= str[i] - 10; if(i == num-2) { str[i+1] = '1'; str[i+2] = '-'; } } } } } void jinwei2(char *str){ int num = strlen(str); for(int i =0;i
= i2 ? (imin = i2 ) : (imin = i1);//得到加数字中字符串较小的 i1 >= i2 ? (flag = 2) : (flag = 1); //标志位 哪一个是较小的字符串 for(i=0;i
= i2 ? (imin = i2 ) : (imin = i1);//得到加数字中字符串较小的 i1 >= i2 ? (flag = 2) : (flag = 1); //标志位 哪一个是较小的字符串 for(i=0;i
0)//正数大于负数 { change(num11); change(num22); for(i =0;i< i1;i++) { if(i
0)//正数xiao于负数 { change(num11); change(num22); for(i = 0;i

  

转载于:https://www.cnblogs.com/eat-too-much/p/5674177.html

你可能感兴趣的文章
Mac OS 10.10.3下Apache + mod_wsgi配置【一】
查看>>
Hibernate基于注解的双向one-to-many映射关系的实现
查看>>
算法竞赛入门经典 例题 3-2 蛇形填数
查看>>
remove-duplicates-from-sorted-list I&II——去除链表中重复项
查看>>
c++ 网络库
查看>>
Linux 格式化扩展分区(Extended)
查看>>
linux echo命令
查看>>
nginx 内置变量大全(转)
查看>>
lakala反欺诈建模实际应用代码GBDT监督学习
查看>>
java 解析excel工具类
查看>>
Google FireBase - fcm 推送 (Cloud Messaging)
查看>>
BBS论坛(二十七)
查看>>
html DOM 的继承关系
查看>>
装饰器的邪门歪道
查看>>
Dubbo常用配置解析
查看>>
【转】C#解析Json Newtonsoft.Json
查看>>
macports的安装及常用命令
查看>>
(转)使用C#开发ActiveX控件
查看>>
spring mvc 基于注解 配置默认 handlermapping
查看>>
半小时学会上传本地项目到github
查看>>