概述
1.在计算机中,由于位宽限制,只能进行有限精度的十进制整数加减法,比如在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]为符号位。
当输入为正数时,+不会出今朝输入字符串中;当输入为负数时,-会出今朝输入字符串中,且必然在输入字符串最左边位置
输入字符串所有位均代表有效数字,即不存在由0起头的输入字符串,比如"0012", "-0012"不会呈现;
要求输出字符串所有位均为有效数字,终局为正或0时+不出今朝输出字符串,终局为负时输出字符串最左边位置为-。
#include <string>
#include <iostream>
#include <stdlib.h>
#include <map>
using namespace std;
map <char,int> char2int;
map <int,char> int2char;
void Init()
{
for(int i = 0;i<10;i++)
{
char CData = (char)(i+48);
char2int[CData] = i;
int2char[i] = CData;
}
}
char * Reverse(const char *strStc,char*strDest)
{
int nLen = strlen(strStc);
int i = 0;
for(nLen;0 <= nLen;nLen--)
{
strDest[i]= strStc[nLen-1];
i++;
}
strDest[i]='