题目就是正整数相同长度相加#include<stdio.h>
#include<string.h>
char last[200],now[200];
void rever(char a[],int n)
{
for(int i=0,j=n-1;i<=j;i++,j--){
char ch=a[i];
a[i]=a[j];
a[j]=ch;
}
return ;
}
int main()
{
memset(last,'\0',sizeof(last));
memset(now,'\0',sizeof(now));
scanf("%s",last);
rever(last,strlen(last));
while(scanf("%s",now)!=EOF){
if(strlen(now)==1&&now[0]=='0'){
rever(last,strlen(last));
printf("%s",last);
return 0;
}
int len=strlen(now);
rever(now,len);
int temp=0;
int pos;
for(int i=0;i<len;i++){
pos=last[i]-'0'+now[i]-'0'+temp;
temp=pos/10;
pos%=10;
last[i]=pos+'0';
}
int L=strlen(last);
for(int i=len;i<L;i++){
pos=last[i]-'0'+temp;
temp=pos/10;
pos%=10;
last[i]=pos+'0';
}
if(temp>0){
int k=strlen(last);
last[k]=temp+'0';
}
memset(now,'\0',sizeof(now));
}
return 0;
}
下面就是网上别人的精简代码
#include<cstdio>
#include<cstring>
int main()
{
int result[10000]={0};
int length=0;
char input[100];
scanf("%s",input);
while(scanf("%s",input),strcmp(input,'0'))
{
for(int i=strlen(input)-1,index=0;i>=0;i--,index++)
{
result[index]+=input[i]-'0';
result[index+1]+=result[index]/10;
result[index]=result[index]%10;
}
if(strlen(input)>=length)
length = strlen(input)+1;
}
while(result[length-1]==0)
length--;
while(length>0)
{
printf("%d",result[length-1]);
length--;
}
return 0;
}
poj 1503 大整数高精度 加法
最新推荐文章于 2019-03-23 17:24:53 发布