c언어 경우의 수 설명 부탁드립니다.
조회수 2147회
#include <stdio.h>
int money(int m)
{
int a = 1, b = 1, c = 1;
for (a = 1; 500 * a + 700 * b + 400 * c <= m; a++)
{
for (b = 1; 500 * a + 700 * b + 400 * c <= m; b++)
{
for (c = 1; 500 * a + 700 * b + 400 * c <= m; c++)
{
if (500 * a + 700 * b + 400 * c == m)
printf("크림빵 %d개, 새우깡 %d개, 콜라 %d개 \n", a, b, c);
}
c = 1;
}
b = 1;
c = 1;
}
}
int main(void)
{
int m;
printf("현재 당신이 소유하고 있는 금액 : ");
scanf_s("%d", &m);
money(m);
printf("어떻게 구입하시겠습니까?\n");
system("pause");
return 0;
}
위에 소스코드 에서 main(int m)함수 중에서 c=1과 b=1,c=1을 왜 주어졌는지 잘 이해가 안갑니다. 참고로 위에 소스코드는 제가 짠게 아닙니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
c언어가 간결하긴 하지만 for 구문은 그렇게 깔끔하지 못합니다.
for(초기값; 반복까지의 값; 초기값의 증가값) 의 문법구조에서
a, b, c 의 값을 1로 준 것은 초기값을 설정한 겁니다.
for 안에 for가 들어간다면 2차원 데이터 표현이라고 보면 됩니다.
대표적으로 구구단을 생각해보면 됩니다.
for(int x = 2; x < 10; x++){ for(int y = 1; y < 10; y++){ printf("%d * %d = %d\n", x, y, x * y); } }
위의 코드는
2 * 1 = 2
2 * 2 = 4
...
9 * 1 = 9
9 * 2 = 18
...
9 * 9 = 81
가 됩니다.
위의 코드를 컴파일하여 실행해보고 한줄 한줄 디버깅으로 x, y 값이 어떡해 변하는지 학습해보시기 바랍니다.
댓글 입력