HDU1002A+BProblemIIC++解法
一开始我是用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要看清楚格式输出的要求,否则坑底你别叫!!!