概述
问题描述:输入两个数字,求两个数相加的结果。
数据大小:每位数字个数小于1000位
例如:输入:123456789 123456789987,输出:123580246776
源代码如下:
#include <stdio.h>
#include <string.h>
int main(){
char a[1000],b[1000];
int c[1500]={0},d[1500]={0};
int i,j,k,t,m,n,q;
scanf("%s%s",a,b);
// 分别求出每位数字的位数
m = strlen(a);
n = strlen(b);
// 将数据倒序储存在两个数组中,
// 将最低位存在c[0]中,最高位存在最后
for(i=0;i<m;i++){
c[i] = a[m-i-1]-'0';
}
for(i=0;i<n;i++){
d[i] = b[n-1-i]-'0';
}
k = m>n?m:n;
t = k-1;// 标记最高位
for(i=0;i<k;i++){
c[i] += d[i];
// 考虑是否进位
if(c[k-1]>=10) t=k;
if(c[i]>=10){
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
for(i=t;i>=0;i--) printf("%d",c[i]);// 倒序输出
return 0;
}
大家有啥疑问的,请在下方留言,我会尽快回复的。
最后
以上就是难过未来为你收集整理的大数加法(蓝桥杯)的全部内容,希望文章能够帮你解决大数加法(蓝桥杯)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复