帮忙用c++写个高精度相加

尽量用字符数组帮忙解释一下每步简单明了的谢谢了... 尽量用字符数组
帮忙解释一下每步
简单明了的
谢谢了
展开
 我来答
liujq007
2008-12-10 · TA获得超过942个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1081万
展开全部
//写了个简单的,没有考虑负数
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
string s1,s2;
int arr1[10000]={0},arr2[10000]={0},temp[10001]={0},i,j,in=0;//10000位够多了。。
cin>>s1>>s2;
for(string::size_type s1Len=0,j=s1.size()-1;s1Len<s1.size();s1Len++)//将字符串转换成数字存放在数组中
arr1[j--]=s1[s1Len]-0x30;
for(string::size_type s2Len=0,j=s2.size()-1;s2Len<s2.size();s2Len++)
arr2[j--]=s2[s2Len]-0x30;
int Len=s1.size()>s2.size()? s1.size():s2.size();//Len是两个数中较长的长度
for(i=0;i<Len;i++)//加法,我只做了两个都是正数,负数没有考虑
{
temp[i]+=arr1[i]+arr2[i];
if(temp[i]>=10)
{
temp[i]-=10;//若该位相加大于10,自减10
temp[i+1]++;//高位加1
in=1;//进位为1
}
else in=0;
}
if(in)
Len++;
for(i=Len-1;i>=0;i--)
cout<<temp[i];//输出结果
cout<<endl;

return 0;
}
bdScan
2008-12-10 · TA获得超过767个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:0
展开全部
//没有小数和负数

#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 256

int main()
{
char szNumber[2][ MAX_LENGTH ];
int nBiger, i, j;
puts("Input Number 1");
scanf("%s", szNumber[0]);
puts("Input Number 2");
scanf("%s", szNumber[1]);

nBiger = strlen( szNumber[0] ) < strlen( szNumber[1] );

for( i = strlen( szNumber[nBiger]) - 1, j = strlen( szNumber [ 1 - nBiger]) - 1; j>=0 ; i--, j-- )
{
szNumber[ nBiger ][ i ] += szNumber[ 1 - nBiger ][ j ] - '0';
if( i > 0 && szNumber[ nBiger ][ i ] > '9' )
{
szNumber[ nBiger ][ i ] -= 10;
szNumber[ nBiger ][ i - 1 ]++;
}
}
i++;
while( --i>=0 )
if( szNumber[ nBiger ][ i + 1 ] > '9' )
{
szNumber[ nBiger ][ i ]++;
szNumber[ nBiger ][ i + 1 ] -= 10;
}
if( szNumber[ nBiger ][ 0 ] > '9' )
{
szNumber[ nBiger ][ strlen( szNumber[nBiger]) + 1 ] = 0;
memcpy( szNumber[ nBiger ] + 1, szNumber[ nBiger ], strlen( szNumber[ nBiger] ) );
szNumber[ nBiger ][1] -= 10;
szNumber[ nBiger ][0] = '1';
}

puts("Result:");
puts( szNumber[ nBiger ]);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式