#include#include "cstring"using namespace std;int add(char s1[],char s2[]){ int a[1001]={ 0},b[1001]={ 0};//当a[1000]时出错会在最后出现一个1 int strlen1 = strlen(s1); int strlen2 = strlen(s2); for(int i=(strlen1-1),j=0;i>=0;i--)//如何将字符串数字转换为数字数组 a[j++] = s1[i] - '0'; for(int i=(strlen2-1),j=0;i>=0;i--)//将字符串调转输入 b[j++] = s2[i] - '0'; for(int i=0;i<1000;i++) { a[i] = a[i] + b[i]; if (a[i] >= 10) { a[i] = a[i] - 10; a[i + 1]++; } } int i; for(i=1000;i>=0&&a[i]==0;i--); //将i定位到数组的有效端 for( ;i>=0;i--) cout << a[i]; return 0;}int main() { int n; char a[1000], b[1000]; cin >> n; for (int i = 0; i < n; i++) { cin >> a >> b; cout << "Case " << i + 1 << ":" << endl; cout << a << " + " << b << " = "; add(a, b); cout << endl; if (i != (n - 1)) cout << endl; } return 0;}
第一、如何将长数字转化为字符串进行计算
第二、for的灵活运用,包括在第一个分号内多定义使字符串反向赋值给数组,包括如何将在定义数组时多出来的0抹去找到第一个不为0的数字的位子
第三、在转换计算得过程中:为何将字符串反向的两个原因:1.相加直接进卫给后一位2.在读取值的时候能直接从开头开始读取,而不用担心从末尾读会把本身数字的0消去的情况
第三、strlen()是直接计算有效字符的长度与sizeof不同(所占空间)