以下程序是为了计算1000位以内的正整数加法,我们都知道,即使是float或者double也到不了1000位的正整数,所以我们就不能使用传统的数据类型的简单相加,我使用了字符串来计算和表示。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char a[1000],b[1000],c[1001];
int i,sum,n=0,len,len_a,len_b;
scanf("%s",a);
scanf("%s",b);
len=(strlen(a)>strlen(b)?strlen(a):strlen(b));
len_a=strlen(a);len_b=strlen(b);
c[len+1]='\0';
c[0]='0';
for(i=0;i<len;i++){
sum=0;
if((len_a-1-i>=0)&&(len_b-1-i>=0)){
sum=(a[len_a-1-i]-'0')+(b[len_b-1-i]-'0')+n;
c[len-i]=sum%10+'0';
n=sum/10;
}
else if(len_a-1-i<0){
sum=(b[len_b-1-i]-'0')+n;
c[len-i]=sum%10+'0';
n=sum/10;
}
else if(len_b-1-i<0){
sum=(a[len_a-1-i]-'0')+n;
c[len-i]=sum%10+'0';
n=sum/10;
}
}
c[0]=n+'0';
if(c[0]=='0') printf("%s\n",c+1);
else printf("%s\n",c);
return 0;
}