본문 바로가기
정보처리기사 필답 실기. 코딩 문제.

정처기 24년 1회 코드 기출문제

by 귀엽소 2025. 5. 13.
반응형

<<틀리기 쉬운 문제>> 싱글턴 패턴.

 

클래스 연결

private static 연결_inst

private int count

 

연결()

 

public static 연결  g()

 

count()

 

getcount()

 

클래스 메인

연결 con1 = 연결.g() //처음보는 형태. new가 없엉. '클래스명. 함수명()' 이건 정적 메서드라는 걸 알아야함.

con1.count() //count=1

 

연결 con2 = 연결.g()

con2.count() // //count=2

 

연결 con3 = 연결.g()

con3.count() //count=3

 

con1.count() //count=4

 

conn1.getcount()

 

정답:

4


c언어 문제

삼항연산자

 

a=0, b=35, c=29

if(a>b)? b:a  //참이면 b, 거짓이면 a가 답이다. c언어에서 0은 거짓 0 이외는 다 참. 0>35니까 거짓..if(0) 거짓이니까 else 하기.

b=b<<2 //왼쪽 시프트. 

else

c=c<<2 //왼쪽 시프트 외쪽으로 2칸이동한다는말. 숫자가 커진다.

29를 2진수로 나타내면

16,8,4,2,1

11101

1 1 1 0 1 0 0
64 32 16 8 4 2 1

64+32+16+4=64+52=116 (29*4)

 

%d, b+c

35+116=151

 

정답:

151


c언어 시저암호

 

char*p="It is 8"

I t   i s   8 \0
[0] [1] [2] [3] [4] [5] [6] [7]
N d   s c   1 \0

char result[100]

int i

 

for문 i=0; p[i]!=\0; i++ //널이 아닌동안 실행.

if문 isupper(p[i]) //I은 대문자임. 실행해줌. result[0]=(p[i]-'A'+5)%26+'A'= (73-65+5) %26+65=13%26+65=78->N

ABCDEFGHI JKLMNOP...

else if (islower (p[i]) //t는 소문자임. 실행해줌. result[1]=(p[1]-'a'+10)%26+'a'= 97+10=(116-97+10)%26+97=29%26+97=100->d

abcd efghijklmn opqrst uvwxyz

result[3]=(p[3]-'a'+10)%26+'a'=105-97+10)%26+97=18+97=115->s

result[4]=(p[4]-'a'+10)%26+'a'=115-97+10)%26+97=99->c

 

else if (isdigit (p[i]) //8은 숫자 p[6]-'0'+3)%10+'0'=8-0+3)%10-0=1

else if !(isupper (p[i]) 0r islower or isdigit (p[i]) //다 해당 안되는 경우(공백인 경우)

 

result[i]=\0

 

결과:

변환된 문자열: Nd sc 1


자바 문제

 

클래스 부모

int a , b

부모(int a, int b) //a=10, b=11

this.a = a

this.b = b 

 

print()

 

클래스 자식 상속 부모

int p=3

자식(int i) //super(10,11)

print() //재정의. p*p=9

 

클래스 테스트

자식 one = new 자식(10) //생성자 이동.

one.print()

 

정답:

9


c언어 구조체문제

 

typedef 구조체{

int a

double b

}뱅크acc

 

double sim(double base, int year) //sim(1.1, 3) //i=0일때 r=1.0*1.1=1.1 //i=1일때 r=1.1*1.1=1.21 //i=3일때 r=1.21*1.1=1.331

 

void initacc(뱅크acc*acc, intx, double y)

a b
9981 2200.0
  2100.0
  2795.1

void xxx(뱅크acc*acc, double*en) //*en>0 && *en< acc->b //100.0>0 (참) && 100.0<2200.0 (참) // acc->bal = acc->b-*en // 2200.0 -100.0=2100.0

 

void yyy(뱅크acc*acc) //acc->b=acc->b*sim((1+0.1),3) //sim 함수 호출. 1.331 반환받음// /acc->b=acc->b*1.331 니까 2100.0*1.331=2795.1

 

메인함수

뱅크acc 내acc //내acc 변수 선언함.

initacc(&내acc, 9981, 2200.0)

double amount = 100.0

xxx(&내acc, &mamount)

yyy(&내acc)

%d and %2f, 내acc.accnum, 내.b

 

정답:

9981 and 2795.10


 

반응형

댓글