HDU 1002 A + B Problem II C++解法

来源:互联网 发布:mac电脑自带抠图软件 编辑:程序博客网 时间:2024/05/16 05:51

一开始我是用char 数组做的,但是后来觉得好麻烦,于是就用string对象来做,毕竟C++本来就是OOP语言

不多说,直接上代码:

#include <iostream>#include <string>//不能写成string,否则strlen未定义using namespace std;string sum(string &s1,string &s2){if(s1==""&&s2=="") return "0";if(s1=="")return s2;if(s2=="")return s1;string max,min;int lens1=s1.length();int lens2=s2.length();if(lens1<lens2){max=s2;min=s1;}else{max=s1;min=s2;}int maxlen=max.length();int minlen=min.length();int i,j;for(i=maxlen-1,j=minlen-1;j>=0;j--,i--)max[i]=max[i]+min[j]-'0';//加起来之后的数存到相应的max[i]中for(i=maxlen-1;i>0;i--)//检测max中每一位的值,除了最前面的那一位{if(max[i]>'9'){max[i]=max[i]-10;max[i-1]+=1;//进位}}if(max[0]>'9')//检测第一位{max[0]=max[0]-10;//记得换掉max[0]的值max="1"+max;//这里"1"或者'1'都可以}return max;}void main(){int num;cin>>num;int i=1;int count=num;while(num)//我只想说,格式是硬伤,没注意输出格式,愣是花多了半个多小时去调程序{string s1,s2;cin>>s1>>s2;cout<<"Case "<<i<<":"<<endl;cout<<s1<<" + "<<s2<<" = "<<sum(s1,s2)<<endl;//“ + ”前后是有空格的if(i<count)cout<<endl;num--;i++;//cout<<sum(s1,s2)<<endl;}}

HDU要看清楚格式输出的要求,否则坑底你别叫!!!

0 0
原创粉丝点击