#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int numArr[5];
int smallestNumber;
scanf("%d %d %d %d %d", &numArr[0], &numArr[1], &numArr[2], &numArr[3], &numArr[4]);
for (int i=0;i < sizeof(numArr) / sizeof(int); i++)
{
smallestNumber = numArr[0];
if (smallestNumber >= numArr[i])
smallestNumber = numArr[i];
}
printf("%d\n", smallestNumber);
return 0;
}
어디가 잘못된건가요?
입력
20 40 10 50 30
출력
20
문제가 원하는 결과
10
UNIT 6을 참고해서 디버거로
smallestNumber = numArr[i];
이 코드에 중단점을 찍고 하나씩 실행해보세요.
if 문에도 중단점을 설정해서 같이 확인해도 좋습니다.
입력 숫자 5개에 대해서 어떤 값이 중단점에서 확인되는지 메모하면 어떤 값이 실행되고, 어떤 값이 누락되는지 알 수 있습니다.
그 다음에 코드를 검토해 수정하면 됩니다.
for (int i=0;i < sizeof(numArr) / sizeof(int); i++)
{
smallestNumber = numArr[0]; // <=== 반복문이 실행될 때마다 배열 첫번째 값으로 초기화가 되어 가장 작은 값이 첫 번째 값으로 고정됨.
if (smallestNumber >= numArr[i])
smallestNumber = numArr[i];
}
smallestNumber = numArr[0];
for ( i=0;i < sizeof(numArr) / sizeof(int); i++)
{
if (smallestNumber >= numArr[i])
smallestNumber = numArr[i];