纯粹考操作。
我用到了<algorithm>中的reverse函数。
#include#include using namespace std;const int LEN = 1005;char a[LEN],b[LEN],sum[LEN];void Init(){ for (int i = 0;i < LEN;i ++) a[i] = b[i] = sum[i] = 0;}void getSum(){ int len = max(strlen(a),strlen(b)); int i; for (i = 0;i < len;i ++) { if (a[i] != 0 && b[i] != 0) sum[i] = a[i] + b[i] - '0'; else if (a[i] != 0) sum[i] = a[i]; else sum[i] = b[i]; } for (i = 0;i < len;i ++) { if (sum[i] > '9') { if (i == (len - 1)) sum[i + 1] = (sum[i] - '0') / 10 + '0'; else sum[i + 1] += (sum[i] - '0') / 10; sum[i] = (sum[i] - '0') % 10 + '0'; } }}int main (){ int caseNum; scanf("%d",&caseNum); for (int i = 1;i <= caseNum;i ++) { Init(); scanf("%s%s",a,b); printf("Case %d:\n",i); printf("%s + %s = ",a,b); reverse(a,a + strlen(a)); reverse(b,b + strlen(b)); getSum(); reverse(sum,sum + strlen(sum)); printf("%s\n",sum); if (i != caseNum) printf("\n"); } return 0;}