#include <stdio.h>
#include <string.h>
#define MAXLENGTH 103
char tmp[MAXLENGTH];
char add1[MAXLENGTH];
char add2[MAXLENGTH];
char sum[MAXLENGTH];
void printString(char * string) {
bool begin = false;
for(int i = 0; string[i] != '\0'; i++) {
if (!begin) {
if (string[i] != '0') {
printf("%c", string[i]);
begin = true;
}
} else {
printf("%c", string[i]);
}
}
printf("\n");
}
void bigAdd(char * add1, char * add2) {
bool carry = 0;
for (int i = MAXLENGTH - 2; i >= 0; i--) {
int A = add1[i] - '0';
int B = add2[i] - '0';
int C = A + B + carry;
carry = (C >= 10 ? 1 : 0);
if (C >= 10) {
add2[i] = C - 10 + '0';
} else {
add2[i] = C + '0';
}
}
// printf("%s\n", add2);
// printString(add2);
}
void initString(char * array) {
for (int i = 0; i < MAXLENGTH-1; i++) {
array[i] = '0';
}
}
void arrange(char * tmp, char * arranged) {
initString(arranged);
int length = strlen(tmp);
for (int i = 0; i <= length; i++) {
arranged[i + MAXLENGTH - length -1] = tmp[i];
}
// printf("%s\n", arranged);
}
int main() {
initString(add1);
initString(add2);
while(1) {
scanf("%s", tmp);
if (strcmp(tmp, "0") == 0) {
break;
}
arrange(tmp, add1);
bigAdd(add1, add2);
}
printString(add2);
}
#include <string.h>
#define MAXLENGTH 103
char tmp[MAXLENGTH];
char add1[MAXLENGTH];
char add2[MAXLENGTH];
char sum[MAXLENGTH];
void printString(char * string) {
bool begin = false;
for(int i = 0; string[i] != '\0'; i++) {
if (!begin) {
if (string[i] != '0') {
printf("%c", string[i]);
begin = true;
}
} else {
printf("%c", string[i]);
}
}
printf("\n");
}
void bigAdd(char * add1, char * add2) {
bool carry = 0;
for (int i = MAXLENGTH - 2; i >= 0; i--) {
int A = add1[i] - '0';
int B = add2[i] - '0';
int C = A + B + carry;
carry = (C >= 10 ? 1 : 0);
if (C >= 10) {
add2[i] = C - 10 + '0';
} else {
add2[i] = C + '0';
}
}
// printf("%s\n", add2);
// printString(add2);
}
void initString(char * array) {
for (int i = 0; i < MAXLENGTH-1; i++) {
array[i] = '0';
}
}
void arrange(char * tmp, char * arranged) {
initString(arranged);
int length = strlen(tmp);
for (int i = 0; i <= length; i++) {
arranged[i + MAXLENGTH - length -1] = tmp[i];
}
// printf("%s\n", arranged);
}
int main() {
initString(add1);
initString(add2);
while(1) {
scanf("%s", tmp);
if (strcmp(tmp, "0") == 0) {
break;
}
arrange(tmp, add1);
bigAdd(add1, add2);
}
printString(add2);
}
大数加法, 字符串模拟, 考察细节多:
1. 输出要将前面的0屏蔽。
2. Maxlength 长度。
3. 要考虑 '\n'
编程还是太毛躁, 要慢慢练就考虑细节,一次写对的能力.