HUD1002

来源:互联网 发布:离线记笔记软件 编辑:程序博客网 时间:2024/06/03 06:53
#include <stdio.h>#include <string.h>#define MAX_BIT 1100void toDigit(char *, int *);void toPlus(int *, int *, int, int);bool firstLine = true;int main(){int cases;scanf("%d%*c", &cases);for (int i  = 1; i <= cases; i++) {char str1[MAX_BIT], str2[MAX_BIT];memset(str1, 0, sizeof(str1));memset(str2, 0, sizeof(str2));scanf("%s %s", str1, str2);if (firstLine) {firstLine = false;}else {printf("\n");}printf("Case %d:\n", i);printf("%s + %s = ", str1, str2);int bit1 = strlen(str1), bit2 = strlen(str2);int A[MAX_BIT], B[MAX_BIT];memset(A, 0, sizeof(A));memset(B, 0, sizeof(B));toDigit(str1, A); toDigit(str2, B);toPlus(A, B, bit1, bit2);}return 0;}void toDigit(char *str, int *result) {int len = strlen(str);memset(result, 0, sizeof(result));for (int i = len - 1, j = 0; i >= 0; i--, j++) {result[j] = (int)(str[i] - '0');}}void toPlus(int *A, int *B, int bit_a, int bit_b){int bit = bit_a > bit_b ? bit_a : bit_b;int overTen = 0;for (int i = 0; i < bit; i++) {int tp = overTen + A[i] + B[i];overTen = tp / 10;A[i] = tp % 10;}int i, zero = false;for (i = MAX_BIT - 1; i >= 0; i--) {if (A[i] != 0) {zero = true;break;}}for (int j = i; j >= 0; j--) {printf("%d", A[j]);}printf("\n");}

原创粉丝点击