본문 바로가기

프로그래밍 언어/C언어

C언어 - 배열과 함수

 

 

이전 글에서 작성한 최종 코드이다.

#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