標(biāo)題:
C++實現(xiàn)兩個N位數(shù)相加的程序
[打印本頁]
作者:
51hei社區(qū)
時間:
2016-1-10 23:23
標(biāo)題:
C++實現(xiàn)兩個N位數(shù)相加的程序
本帖最后由 51hei社區(qū) 于 2016-1-10 23:25 編輯
#include<iostream>
#include<string>
int main()
{
using namespace std;
string a,b;
cout<<endl<<"輸入數(shù)字A:";
cin>>a;
cout<<"輸入數(shù)字B:";
cin>>b;
int dh/*用來保存A B中每位數(shù)相加的和*/
,yu=0/*用來保存要進(jìn)位的值*/
,az=a.size()-1,bz=b.size()-1;/*測量A B字符串的長度 減1是因為數(shù)組從0的開始的*/
int bjab=az>bz?az:bz;//計算出a b兩個字符串那個長
char *p=new char[bjab+3]; //申請空間,用來存放最后的和
if(p==NULL)
{
cout<<"內(nèi)存空間不夠 ";
return 0;
}
int i=0,vc=0,k=0,jl=0;
for(i;i<=bjab+2;i++)
{
if(!(a[az]>='0'&&a[az]<='9'&&b[bz]>='0'&&b[bz]<='9'))
{
cout<<endl<<"你輸入的數(shù)字中有非法字符! 程序?qū)⑼顺?quot;<<endl;
delete []p;
exit(1);
}
dh=(a[az]-'0')+(b[bz]-'0'); //將a b中的每一位字符轉(zhuǎn)換成數(shù)字后相加
p[vc++]=((dh+yu)%10)+'0'; //保存 dh中和個位數(shù)
if(dh+yu==10) yu=1; //用來除去如果dh等于9 yu等于1時沒余數(shù)的情況
else yu=dh/10;
if(az==0) a[az]='0'; //當(dāng)a 字符串比b短時,比b短的地方補(bǔ)0
else az--;
if(bz==0) b[bz]='0'; //同上
else bz--;
}
cout<<endl<<"數(shù)字A的長度為:"
<<a.size()<<endl<<"數(shù)字B的長度為:"
<<b.size()<<endl;
cout<<endl<<"A+B=";
if(p[vc-1]=='0'&&p[vc-2]=='0') k=vc-3; //除去沒有進(jìn)位時前面有0的情況
else if(p[vc-1]='0') k=vc-2;
else
k=vc-1 ;
for(k;k>=0;k--) //從后面往前輸出字符
cout<<p[k];
cout<<endl;
delete []p;
return 0;
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1