#include #define SIZE 4 main() { /* Digits of numbers are stored in reverse order */ char number1[SIZE]; /* First number */ char number2[SIZE]; /* Second number */ char number3[SIZE]; /* Stores the sum */ char symbol; /* Stores current input symbol */ char temp[SIZE]; /* temporary storage for numbers */ int size; /* stores the number of digits is input */ /* Read the first number and store it in number1 */ printf("Input a number of at most %d digits: ", SIZE); symbol = getchar(); /* read first symbol */ for (size = 0; 1; size++) { if ((symbol < '0') || (symbol > '9')) /* not a digit */ break; if (size == SIZE) { /* input too large */ printf("Input too large: number should be at most %d digits\n", SIZE); return; } temp[size] = symbol - '0'; symbol = getchar(); /* read next symbol */ } /* Store number in reverse order */ int i; for (i = 0; i < size; i++) number1[i] = temp[size-1-i]; for (i = size; i < SIZE; i++) number1[i] = 0; /* First number read. * Now read the second numnber. */ printf("Input a number of at most %d digits: ", SIZE); symbol = getchar(); /* read first symbol */ for (size = 0; 1; size++) { if ((symbol < '0') || (symbol > '9')) /* not a digit */ break; if (size == SIZE) { /* input too large */ printf("Input too large: number should be at most %d digits\n", SIZE); return; } temp[size] = symbol - '0'; symbol = getchar(); /* read next symbol */ } /* Store number in reverse order */ for (i = 0; i < size; i++) number2[i] = temp[size-1-i]; for (i = size; i < SIZE; i++) number2[i] = 0; /* Second number read. * Now add the two. */ int carry; /* Stores the carry value */ for (i = 0, carry = 0; i < SIZE; i++) { number3[i] = number1[i] + number2[i] + carry; if (number3[i] > 9) { /* new carry created */ number3[i] = number3[i] - 10; carry = 1; } else /* no carry created */ carry = 0; } if (carry == 1) { /* sum too large */ printf("The sum is too large!\n"); return; } /* Addition complete. * Now output the sum. */ /* Skip the leading zeroes */ for (i = SIZE-1; i >= 0; i--) if (number3[i] > 0) break; if (i == 0) /* the sum is zero! */ printf("The sum is: 0\n"); else { printf("The sum is: "); for (; i >= 0; i--) putchar(number3[i]+'0'); printf("\n"); } /* All done! */ }