33번 코드 중, 반복문에서
for(i=1;i<=10;++i,hap+=i); 이렇게 나와있는데
for(i=1;i<=10;++i)
{
hap += i;
}
이렇게 코딩한 것과 결과가 다르게 나오더라구요
저는 두 코드가 같다고 생각해서 i,hap이 두 코드 모두 11,55라고 생각했는데
왜 문제에서의 코드는 hap이 65가 되는건지 잘 이해가 안가서 여쭤봅니다
두 코드에 어떤차이가 있는건가요?
안녕하세요 길벗수험서 운영팀입니다.
for문의 수행 순서를 알아두실 필요가 있습니다.
for문을 간략화 시키면 다음과 같습니다.
for(①; ②; ③)
④;
for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
이게 말씀하신 후자의 코드입니다. (5회로 줄였다고 가정하고..)
전자의 코드는 ④번이 사라지고, ③번이 두개로 늘어나겠네요.
1회 : ①, ②(조건 참)
2회 : ③-1 ③-2, ②(조건 참)
3회 : ③-1 ③-2, ②(조건 참)
4회 : ③-1 ③-2, ②(조건 참)
5회 : ③-1 ③-2, ②(조건 참)
종료 : ③-1 ③-2, ②(조건 거짓) <탈출>
위 방식에서 i의 초기값은 ①번에서 주어지고, 증가값은 ③-1에서 주어집니다.
후자의 코드는 ①번 이후에 5회의 합산이 이루어지지만, 전자의 코드는 ①과 ③-1번을 수행한 이후에야 5회의 합산(③-2)이 이루어지기에 값이 달라지게 되죠.
후자의 코드 : 1+2+3+...+10
전자의 코드 : 2+3+4+...+11
이렇게 됩니다.
행복한 하루되세요 :)
-
관리자2020-04-08 10:49:09
안녕하세요 길벗수험서 운영팀입니다.
for문의 수행 순서를 알아두실 필요가 있습니다.
for문을 간략화 시키면 다음과 같습니다.
for(①; ②; ③)
④;
for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
이게 말씀하신 후자의 코드입니다. (5회로 줄였다고 가정하고..)
전자의 코드는 ④번이 사라지고, ③번이 두개로 늘어나겠네요.
1회 : ①, ②(조건 참)
2회 : ③-1 ③-2, ②(조건 참)
3회 : ③-1 ③-2, ②(조건 참)
4회 : ③-1 ③-2, ②(조건 참)
5회 : ③-1 ③-2, ②(조건 참)
종료 : ③-1 ③-2, ②(조건 거짓) <탈출>
위 방식에서 i의 초기값은 ①번에서 주어지고, 증가값은 ③-1에서 주어집니다.
후자의 코드는 ①번 이후에 5회의 합산이 이루어지지만, 전자의 코드는 ①과 ③-1번을 수행한 이후에야 5회의 합산(③-2)이 이루어지기에 값이 달라지게 되죠.
후자의 코드 : 1+2+3+...+10
전자의 코드 : 2+3+4+...+11
이렇게 됩니다.
행복한 하루되세요 :)