这题要用字符串来写了额 但是处理起来比较麻烦 要处理好进位的问题 我的思路是先把进位算出来 再加到字符里面 为了防止数据溢出原有的位数 我还在两个加数的末尾加了个‘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; }
0.0分
2 人评分
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:868 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1055 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:677 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:1026 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:643 |
妹子杀手的故事 (C语言代码)浏览:737 |
C二级辅导-阶乘数列 (C语言代码)浏览:736 |
printf基础练习2 (C语言代码)浏览:690 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:609 |
1011题解浏览:819 |