#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define MAX 15 // 문자열 최대 길이
// 문자열 글자 '0' 으로 초기화
void strin(char arg[MAX]) {
int a;
for (a = 0; a < MAX; a++) {
arg[a] = '0'; // 문자열 글자 '0'으로 초기화
}
}
// 입력된 좌측정렬 문자열을 우측정렬 문자열로 변환
void strmvstr(char arg[MAX], int len) {
int a;
char temp[MAX] = { 0, };
strin(temp); // temp 문자열 글자 '0'으로 초기화
for (a = 0; a < len; a++) {
temp[(MAX-len)+a] = arg[a]; // 좌측정렬
}
for (a = 0; a < MAX; a++) {
arg[a] = temp[a];
}
}
int main(void) {
int a = 0;
char up[MAX] = { 0, };
char down[MAX] = { 0, };
char result[MAX] = { 0, };
strin(up);
strin(down);
printf(" Input UP : ");
scanf("%s", up);
printf(" Input DN : ");
scanf("%s", down);
printf("\\n ");
strmvstr(up, strlen(up)); // 입력된 좌측정렬 문자열을 우측정렬 문자열로 변환
for (a = 0; a < MAX; a++) printf(" %c", up[a] );
printf("\\n+ ");
strmvstr(down, strlen(down)); // 입력된 좌측정렬 문자열을 우측정렬 문자열로 변환
for (a = 0; a < MAX; a++) printf(" %c", down[a] );
printf("\\n--------------------------------\\n");
for (a = MAX - 1; a > 0; a--) {
result[a - 1] = ( result[a] + (up[a] - '0' ) + ( down[a] - '0') ) / 10; // 올림수(Carry) 계산
result[a] = ( result[a] + (up[a] - '0' ) + ( down[a] - '0') ) % 10;
}
printf("= ");
for (a = 0; a < MAX; a++) printf(" %d", result[a]); // 덧셈 결과 확인
}
<aside> ➡️ Input UP : 123 Input DN : 999
0 0 0 0 0 0 0 0 0 0 0 0 1 2 3
= 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2
</aside>