2个回答
展开全部
//写了个简单的,没有考虑负数
#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;
}
#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;
}
展开全部
//没有小数和负数
#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 ]);
}
#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 ]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询