본문 바로가기
카테고리 없음

2021 정보처리기사 실기 3회 프로그래밍 문제 해설(14번, 17번)

by picker_life 2024. 3. 21.
반응형

2021 정보처리기사 실기 3회 1번

문제

14. 다음 파이썬 코드이다. 알맞는 출력값을 쓰시오.

 

1
2
a,b = 100, 200 
print(a==b)
cs

 

정답

False

해설

  1. a,b = 100, 200 이 부분에서 파이썬의 멀티플 할당 기능을 사용하여, 변수 a에는 100을, 변수 b에는 200을 할당한다. 이는 a = 100과 b = 200을 간단하게 표현한 것이다.
  2. print(a==b) 이 부분에서는 == 연산자를 사용하여 변수 a의 값과 변수 b의 값이 같은지 비교한다. a에는 100이, b에는 200이 할당되었으므로, 이 두 값은 서로 다르다. 따라서 a == b의 결과는 False가 된다.

print함수 안에 a와 b가 들어있어 a와 b의 정수값이 출력된다고 생각할 수 있으나 가운데에 ==연산자가 있기 때문에 정수값이 아닌 비교 결과가 출력되는 문제이다.

 

파이썬에서 == 연산자는 두 객체의 값이 동일한지 비교하는 데 사용됩니다. 두 객체의 값이 같으면 True를, 다르면 False를 반환합니다. 이 경우, a와 b에 할당된 값이 서로 다르기 때문에 False가 출력되는 것이다.

 

2021 정보처리기사 실기 3회 17번

문제

17. 다음 C언어에 대한 알맞는 출력값을 쓰시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
struct jsu {
  char name[12];
  int os, db, hab, hhab;
};
 
int main(){
struct jsu st[3= {{"데이터1"9588}, 
                    {"데이터2"8491}, 
                    {"데이터3"8675}};
struct jsu* p;
 
= &st[0];
 
(p + 1)->hab = (p + 1)->os + (p + 2)->db;
(p + 1)->hhab = (p+1)->hab + p->os + p->db;
 
printf("%d\n", (p+1)->hab + (p+1)->hhab);
}
 
 
cs

 

 

정답

501

해설

  1. struct jsu 구조체는 학생의 이름(name), 운영체제 성적(os), 데이터베이스 성적(db), 두 성적의 합(hab), 그리고 추가 계산된 합(hhab)을 저장한다.
  2. struct jsu st[3]에서는 3명의 학생 데이터를 초기화하고 있다. 각각의 학생 데이터에는 이름, 운영체제 성적, 데이터베이스 성적이 할당되며, hab와 hhab는 초기화되지 않는다.
  3. 포인터 p는 st 배열의 첫 번째 원소를 가리킨다 (p = &st[0];).
  4. (p + 1)->hab = (p + 1)->os + (p + 2)->db; 이 부분에서는 포인터 산술을 사용하여 두 번째 학생(p + 1)의 hab 값을 계산합니다. 여기서 (p + 1)->os는 두 번째 학생의 운영체제 성적을, (p + 2)->db는 세 번째 학생의 데이터베이스 성적을 의미한다. 따라서 (p + 1)->hab은 두 번째 학생의 운영체제 성적과 세 번째 학생의 데이터베이스 성적의 합으로 설정된다.
  5. (p + 1)->hhab = (p+1)->hab + p->os + p->db; 이 부분에서는 두 번째 학생의 hhab 값을 계산한다. 이 값은 두 번째 학생의 hab 값, 첫 번째 학생의 운영체제 성적, 그리고 첫 번째 학생의 데이터베이스 성적의 합이다.
  6. 최종적으로 printf("%d\n", (p+1)->hab + (p+1)->hhab);을 통해 두 번째 학생의 hab 값과 hhab 값을 더한 결과를 출력한다.

초기화된 데이터에 따르면:

  • 데이터1의 os는 95, db는 88
  • 데이터2의 os는 84, db는 91
  • 데이터3의 os는 86, db는 75
  • (p + 1)->hab은 데이터2의 운영체제 성적(84)와 데이터3의 데이터베이스 성적(75)를 더한 값이므로, 159이다.
  • (p + 1)->hhab은 (p+1)->hab(159) + 데이터1의 os(95) + 데이터1의 db(88)이므로, 342이다.

그래서 최종 출력값은 (p+1)->hab + (p+1)->hhab 즉, 159 + 342 = 501이 된다.