原题链接:蓝桥杯基础练习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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复