原题链接:蓝桥杯基础练习VIP-高精度加法
解题思路:
个人笔记:a、b 两个字符串数组保存整数,c、e 两个整型数组保存每一位数字,d 数组用来交换,
y数组用来计算。。。
注意事项:
参考代码:
#include<iostream> #include<algorithm> #include<string.h> #include<stdlib.h> using namespace std; int main() { char a[1100],b[1100],d[1100]; int c[1100],e[1100],y[1100]; int i,t,w,j,m1,m2; cin>>a; cin>>b; m1=strlen(a) ;m2=strlen(b); //以m1为主要的长度,两个整形数组分别保存一个,保持m1最短 if(m1>m2) //数组和长度都要交换 { t=m1;m1=m2;m2=t; strcpy(d,a); strcpy(a,b); strcpy(b,d); } j=0;w=0; //从后面取出来存放 for(i=m1-1;i>=0;i--) c[j++]=a[i]-'0'; // 将字符转换为整型进行存储 for(i=m2-1;i>=0;i--) e[w++]=b[i]-'0'; // 将字符转换为整型进行存储 for(i=0;i<m1;i++) y[i]=c[i]+e[i]; // 每位相加 /* 每位相加:12345 111 ------- 666 y[i]先保存345和111的各自的总合,最后再把多出来的12放在后面 */ for(i=m1;i<m2;i++) //把最长那个保存起来,也是转化整型 y[i]=e[i]; for(i=0;i<m2;i++) { if(i!=m2-1) //最后一位就算是大于10也不用理它 if(y[i]>=10) { y[i]=y[i]-10; y[i+1]=y[i+1]+1; } } for(i=m2-1;i>=0;i--) cout<<y[i]; cout<<endl; return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复