이전 글에서 작성한 최종 코드이다.
#include <stdio.h>
int main() {
int i, b=0, s=0;
char a[4] = { '1', '2', '3', '4' };
for (i = 1; i <= 4; i++) {
a[4 - i] -= '0';
if (i == 1)
b = 1;
else
b *= 10;
s = s + a[4 - i] * b;
}
printf("%d", s);
}
우리는 이 코드를 10의 배수를 계산하는 부분을 따로 함수로 표현해볼 것이다.
#include <stdio.h>
int ten(int k) {
int j;
int b = 1;
for (j = 0; j < k; j++)
b *= 10;
return b;
}
int main() {
int i, b, s=0;
char a[4] = { '1', '2', '3', '4' };
for (i = 0; i < 4; i++) {
a[i] -= '0';
b = ten(4 - i - 1);
s = s + a[i] * b;
}
printf("%d", s);
}
자리수를 계산해주는 ten()이라는 함수를 만들었고
main() 함수에서 계산된 ten(4 - i - 1) 값을
k로 받아와 반복문을 통해 1000, 100, 10, 1가 각각 반환되어
a[i]인 1, 2, 3, 4와 b가 곱해져 1234가 됨을 알 수 있다.
그렇다면 10진수 숫자로 바꾸는 부분도 함수로 바꾸어보자.
#include <stdio.h>
int ten(int k) {
int j;
int b = 1;
for (j = 0; j < k; j++)
b *= 10;
return b;
}
int digit(char a[4], int n) {
int i;
int b = 1;
int s = 0;
for (i = 0; i < n; i++) {
a[i] -= '0';
b = ten(n - i - 1);
s = s + a[i] * b;
}return s;
}
int main() {
int s;
int n = 4;
char a[4] = { '1', '2', '3', '4' };
s = digit(a, n);
printf("%d", s);
}
digit() 함수를 만들어 4의 값을 받아온 n을 통해 ten 함수로 이어져
아까의 코드와 비슷한 개념을 가진 코드이다.
한가지 팁을 주자면,
이렇게 아래에서 위로 함수가 실행되는 것을 탑 - 다운 방식이라고 한다.
탑 - 다운 방식으로 프로그래밍 하려면 함수가 핵심이며
이와 같은 방식으로 프로그래밍 하는 것을 구조적 프로그래밍이라고 한다.
(이러한 구조적 프로그래밍의 대표적인 언어는 Java언어이며
객체지향에 대해 공부하고싶다면 Java게시판으로..!)
https://book.naver.com/bookdb/book_detail.nhn?bid=8187381
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 - 숫자 표현 범위 (0) | 2021.02.03 |
---|---|
C언어 - 배열 문법 (0) | 2021.01.25 |
C언어 - 배열의 시작 (0) | 2021.01.20 |
C언어 - 아스키코드 (0) | 2021.01.19 |
C언어 - 타입캐스팅 typecasting (0) | 2021.01.15 |