本文主要是介绍华科:大整数相加,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网上某位大神的思路很符合我的三观,顺着看下来竟然每行都看懂了,要是每个程序员思路都这么清晰就好了呢。
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;int main()
{/*数组a和b用于倒序装入输入的字符串S1和S2,k为每次相加时的进位,len1和len2为输入长度*/int a[1000],b[1000],i,k,len1,len2;char S1[1000],S2[1000];while(scanf("%s%s",S1,S2)!=EOF){memset(a,0,sizeof(a));//初始化memset(b,0,sizeof(b));//初始化k=0;//初始化len1=strlen(S1);len2=strlen(S2);/*倒序装入*/for(i=0;i<len1;i++)a[i]=S1[len1-1-i]-'0';for(i=0;i<len2;i++)b[i]=S2[len2-1-i]-'0';/*先从0开始相加,注意这里的技巧性哦*/for(i=0;i<len1&&i<len2;i++){a[i]=a[i]+b[i]+k;k=a[i]/10;a[i]=a[i]%10;}/*到这,有可能会有一个长一点,就让那个长的继续加就可以了*/if(len1>len2){while(i<len1){a[i]=a[i]+k;k=a[i]/10;a[i]=a[i]%10;i++;}}if(len1<len2){while(i<len2){a[i]=b[i]+k;k=a[i]/10;a[i]=a[i]%10;i++;}}/*因为最后输出是倒序输出,因此第一个字符不能为0哦!所以就判断一下啦,如果为0就i--咯*/if(k)a[i]=k;elsei--;/*倒序输出*/while(i>=0)printf("%d",a[i--]);printf("\n");}/*怎么样,是不是很简单呢?聪明的你学会了吗?*/
}
这篇关于华科:大整数相加的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!