这题要用字符串来写了额
但是处理起来比较麻烦  要处理好进位的问题
我的思路是先把进位算出来 再加到字符里面
为了防止数据溢出原有的位数 我还在两个加数的末尾加了个‘0’

注意事项:

小心点写 别急慢慢来


#include<iostream>
#include<cstring>
using namespace std;
void f(string str1,string str2)
{
  
    string str3="",str4="",str5 (1000,' ');
    for(int i=str1.length()-1;i>=0;i--)
    {
    	str3+=str1[i];
    }
	for(int i=str2.length()-1;i>=0;i--)
    {
    	str4+=str2[i];
	}
	int len1=str3.length();
	int len2=str4.length();
	str3+='0';
	str4+='0';
    //cout<<str4<<endl;
	//cout<<str3<<endl;
    if(len1<=len2)
	{
		for(int i=0;i<len1;i++)
		{
			if((str3[i]-'0')+(str4[i]-'0')>=10)
			{
				str4[i+1]+=1;
			}
			str5[i]='0'+((str3[i]-'0')+(str4[i]-'0'))%10;
		
		}
		for(int i=len1;i<len2;i++)
		{
			if((str4[i]-'0')>=10)
			{
				str4[i+1]+=1; 
			}
			str5[i]='0'+(str4[i]-'0')%10;
		}
		//cout<<str4[len2]<<endl;
		if(str4[len2]!='0')
		str5[len2]=str4[len2];
	}
    else
    {
    	      for(int i=0;i<len2;i++)
		{
			if((str3[i]-'0')+(str4[i]-'0')>=10)
			{
				str3[i+1]+=1;
			}
			str5[i]='0'+((str3[i]-'0')+(str4[i]-'0'))%10;
		
		}
		for(int i=len2;i<len1;i++)
		{
			if((str3[i]-'0')>=10)
			{
				str3[i+1]+=1; 
			}
			str5[i]='0'+(str3[i]-'0')%10;
		}
		//cout<<str3[len1]<<endl;
		if(str3[len1]!='0')
		str5[len1]=str3[len1];
    	
    	
  }
	for(int i=str5.length()-1;i>=0;i--)
	{
		if(str5[i]!=' ')
		cout<<str5[i];
	}
	cout<<endl;
}
int main()
{
	string str1,str2;
	while(cin>>str1>>str2)
	{
		f(str1,str2);
	}
	return 0;
 }


点赞(6)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论