-
[문제해설] 다음 C언어로 작성한 프로그램의 실행 결과로 가장 옳은 것은?전자계산기조직응용기사/필기 기출문제 해설 2021. 8. 13. 00:01반응형
전자계산기조직응용기사 필기 기출문제 (1과목 전자계산기프로그래밍-C언어)
다음 C언어로 작성한 프로그램의 실행 결과로 가장 옳은 것은?
#include<stdio.h>
int main(void) {
int sum=0;
for (int i=0;i<10;i++) {
sum+=i;
}
printf("%d",sum);
return 0;
}① 36 ② 45
③ 55 ④ 66
- 문제 해설 -
C언어 코드를 제시하고 결과를 묻는 문제입니다.
이런 문제의 경우, 쉬워 보인다고 섣불리 암산해서 답을 선택하다가 오답을 적을 수도 있으니, 철저하게 내가 컴파일러다 라고 생각하고 한줄한줄 따라가며 디버깅하는 것이 좋습니다.(물론 이 문제의 경우 그 정도의 난의도는 아닙니다. ^^)
코드를 한줄 한줄 살펴보겠습니다.
1 #include<stdio.h> 2 int main(void) { 3 int sum=0; 4 for (int i=0;i<10;i++) { 5 sum+=i; 6 } 7 printf("%d",sum); 8 return 0; 9 }
3번 라인: 정수형변수 sum을 선언하면서 값은 0으로 초기화합니다.
4~6번 라인: for()문을 이용한 반복문이 실행됩니다. 반복문을 만나면, 순차표를 작성하는 것이 좋습니다. 우선 반복문이 실행되는 조건을 보겠습니다.
for(초기값;조건;증감값) { body } for()문은 위와 같은 형식을 가짐니다. for()문이 가지는 3개의 인자(초기값, 조건,증감값)는 공백으로 두어도 됩니다.
그럼 본 코드에서 초기값(int i=0)은 i라는 정수변수를 선언과 동시에 0으로 초기화시킵니다. 조건(i<10)은 i가 10보다 작을때 body의 코드를 실행한다는 의미입니다. 증감값(i++)은 매번 루프를 돌때 i값을 1씩 증가시킨다는 의미입니다.
바디(sum+=i)의 내용은 루프를 돌때마나 변수 sum에 i의 값을 더해준다는 의미입니다.
그럼 순차표를 만들어보겠습니다.
i sum 0 0 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 순차표는 이렇게 값이 변하는 변수 위주로 작성해줍니다. 물론 실제 시험 중에 모든 루프를 작성할 필요는 없습니다. 순차표를 몇줄 작성하다보면 이 소스의 알고리즘이 이해가 되고, 값을 유출할 수 있습니다.
7번 라인: 출력문 printf()문이 있는 라인입니다. 값과 바로 직결이 되는 부분이라 신중하게 보셔야됩니다. 처음 문제를 풀때 가장 먼저 파악하고 코드를 분석해야 됩니다. 무엇을 언제 출력하는지를 파악해야되니깐요. 이 문제의 경우 변수 sum의 값을 출력하는 것입니다. 그럼 위에서 만든 순차표의 마지막 sum의 값인 45가 출력이 될겁니다.
이렇게 정답은 2번이 됩니다.
사실 문제의 난의도에 비해 해설이 거창한 면이 있지만, 문제 푸는 요령을 보여드리고 싶었습니다.
https://youtube.com/playlist?list=PLboXycXmAIDuukQ2A6EvMZI-x1IMy3Xc-
반응형'전자계산기조직응용기사 > 필기 기출문제 해설' 카테고리의 다른 글