1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 十进制大数的加法运算

十进制大数的加法运算

时间:2024-06-23 19:08:26

相关推荐

十进制大数的加法运算

输入文件的第一行为一个整数N,表示输入文件中接下来有N组数据,没组数据最多包含100行,每行有一个非常长的十进制整数组成,这个整数的长度不会超过100个字符,而且只包含数字,每组数据的最后一行为0,表示这组数据结束。

对输入文件的每组数据,输出他们的和。

此题不同于两大数相加,是多个大数相加的问题,在求和时,有其独到之处:竖式加法

#include<iostream>#include<stdio.h>#include<string.h>const int M=200;using namespace std;int main(){char buffer[M];int array[M][M],answer[M];int N,maxn,len,num_integers,carry,sum,digit,l;while(cin>>N){for(int k=1;k<=N;k++){maxn=-1;memset(array,0,sizeof(array));memset(answer,0,sizeof(answer));for(num_integers=0;num_integers<100;num_integers++ ){gets(buffer);if(strcmp(buffer,"0")==0) break;len=strlen(buffer);if(len>maxn)maxn=len;for(int j=len-1,m=0;j>=0;j--)array[num_integers][m++]=buffer[j]-'0';}carry=0;for(int i=0;i<maxn+2;i++){sum=carry;for(int j=0;j<num_integers;j++){sum+=array[j][i];digit=sum%10;carry=sum/10;answer[i]=digit;}}for(l=maxn+2;l>=0;l--)if(answer[l]!=0)break;while(l>=0){cout<<answer[l--];}cout<<endl;}}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。