朋友问的,就写了一下,顺便记录记录
#include <stdio.h>
void add(char* a, char* b) {
int ret[1024] = {0};
int location = 0;
int lentha = strlen(a);
int lenthb = strlen(b);
int lenth = lentha > lenthb ? lenthb : lentha;
int uper = 0;
int this = 0;
for (int i = 1; i <= lenth; i++) {
this = (a[lentha - i] - '0' + b[lenthb - i] - '0' + uper) % 10;
uper = (a[lentha - i] - '0' + b[lenthb - i] - '0' + uper) / 10;
ret[location++] = this;
}
if (lentha == lenthb && uper == 1) {
ret[location++] = 1;
location--;
for (; location >= 0; location--)printf("%d", ret[location]);
return;
}
if (lentha > lenthb) {
for (int i = lenth+1; i <= lentha; i++) {
this = (a[lentha - i] - '0'+ uper) % 10;
uper = (a[lentha - i] - '0'+ uper) / 10;
ret[location++] = this;
}
}
else {
for (int i = lenth + 1; i <= lenthb; i++) {
this = (b[lenthb - i] - '0' + uper) % 10;
uper = (b[lenthb - i] - '0' + uper) / 10;
ret[location++] = this;
}
}
if (uper == 1)ret[location++] = 1;
location--;
for (; location >= 0; location--)printf("%d", ret[location]);
}
int main() {
add("534234555", "5555");
}
|