#include <stdio.h>
#include <ctype.h>
#define LENGTH 100
#define NUL 0x0
int main(int argc,char **argv)
{
char aug_end[LENGTH], //加数
add_end[LENGTH], //被加数
sum[100];
int cFlags, //进位标志位
temp,
i,
j,
i_aug_len, //加数的位数
i_add_len, //被加数的位数
ch_2_i_aug,
ch_2_i_add;
//初始化数组
i=0;
while(i<100)
{
aug_end[i]=NUL;
add_end[i]=NUL;
sum[i]=NUL;
i++;
}
//输入加数
i=0;
i_aug_len=0;
printf("Please input the augend:");
while(isdigit(temp=getc(stdin)))
{
aug_end[i]=temp;
i++;
i_aug_len++;
if(i>=100)
break;
}
fflush(stdin);
//数据对齐,将输入数据右对齐
for(i=100-i_aug_len;i>0;i--)
for(j=100-i;j>=0;j--)
{
aug_end[j+1]=aug_end[j];
}
i=100-i_aug_len;
while(i>=0)
{
aug_end[i-1]=0x30;
i--;
}
//输入被加数
i=0;
i_add_len=0;
printf("Please input the augend:");
while(isdigit(temp=getc(stdin)))
{
add_end[i]=temp;
i++;
i_add_len++;
if(i>=100)
break;
}
fflush(stdin);
//数据对齐,将输入数据右对齐
for(i=100-i_add_len;i>0;i--)
for(j=100-i;j>=0;j--)
{
add_end[j+1]=add_end[j];
}
i=100-i_add_len;
while(i>=0)
{
add_end[i-1]=0x30;
i--;
}
//进行加法运算,按照位置进行计算,从右向左运算
cFlags=0; //首次运算置位进位标志位为0
for(i=99;i>=0;i--)
{
ch_2_i_aug=aug_end[i]-48; // char ——》 int
ch_2_i_add=add_end[i]-48;
temp=ch_2_i_aug+ch_2_i_add+cFlags;
if(temp >=10)
{ //如果进位了,就应该将个位数取出来,同时将进位标志位置1
cFlags=1;
temp-=10;
}
else
{
cFlags=0;
}
sum[i]=temp+48; // int ——》 char
}
//输出运算结果
puts("\nThe sum of the augadd and addend is:");
if(cFlags==1)
putc('1',stdout);
for(i=0;i<100;i++)
{
if(isdigit(sum[i]))
putc(sum[i],stdout);
}
putc('\n',stdout);
return 0;
}