两个15位的整数相加c语言,二个超长正整数的相加

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

看看这个,定义数组的长度为251,可以实现最长250位的两个整数相加.

#include

#include

main()

{int i;

char str1[251]={0};

char str2[251]={0};

char str_rut[252]={0};

int len_str1,len_str2,len_rut=0;

int flag=0; /*定义初始变量*/

clrscr();

printf("please input the first value:\n");

scanf("%s",str1);

printf("please input the second value:\n");

scanf("%s",str2); /*输入数据*/

len_str1=strlen(str1)-1;

len_str2=strlen(str2)-1;

while(len_str1>=0&&len_str2>=0)

{ *(str_rut+len_rut)=*(str1+len_str1)+*(str2+len_str2)+flag-48;

len_rut++;

flag=0;

if(*(str_rut+len_rut-1)>=58)

{ *(str_rut+len_rut-1)-=10;

flag=1;

}

len_str1--;

len_str2--;

}

while(len_str1>=0)

{

*(str_rut+len_rut)=*(str1+len_str1)+flag;

len_rut++;

flag=0;

if(*(str_rut+len_rut-1)>=58)

{ *(str_rut+len_rut-1)-=10;

flag=1;

}

len_str1--;

}

while(len_str2>=0)

{

*(str_rut+len_rut)=*(str2+len_str2)+flag;

len_rut++;

flag=0;

if(*(str_rut+len_rut-1)>=58)

{ *(str_rut+len_rut-1)-=10;

flag=1;

}

len_str2--;

}

if(flag==1)

*(str_rut+len_rut)=49;

len_str1=strlen(str1);

len_str2=strlen(str2);

len_str1=strlen(str1);

len_str2=strlen(str2);

strrev(str_rut);

printf("\n");

if(len_str1>len_str2)

{

printf(" %s\n",str1);

printf("+ ");

for(i=1;i<=len_str1-len_str2;i++)

printf(" ");

printf("%s\n",str2);

printf("--");

for(i=1;i<=len_str1;i++)

printf("-");

printf("\n=");

if(flag==0) printf(" ");

printf("%s\n",str_rut);

}

else if(len_str1

{ printf(" ");

for(i=1;i<=len_str2-len_str1;i++)

printf(" ");

printf("%s\n",str1);

printf("+ %s\n",str2);

printf("--");

for(i=1;i<=len_str2;i++)

printf("-");

printf("\n=");

if(flag==0) printf(" ");

printf("%s\n",str_rut);

}

else

{ printf(" %s\n",str1);

printf("+ %s\n",str2);

printf("--");

for(i=1;i<=len_str1;i++) printf("-");

printf("\n=");

if(flag==0) printf(" ");

printf("%s\n",str_rut);

}

system("pause");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值