2023 정보처리기사 실기 2회 1번
문제
1. C언어 코드의 문제. 보기의 조건에 맞도록 괄호안에 알맞은 코드를 작성
입력값이 54321일 경우 출력값이 43215로 출력되어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
int main(void) {
int n[5];
int i;
for (i = 0; i < 5; i++) {
printf("숫자를 입력해주세요 : ");
scanf("%d", &n[i]);
}
for (i = 0; i < 5; i++) {
printf("%d", ( ) );
}
return 0;
}
|
cs |
정답
n[(i+1) % 5]
해설
여기서 i는 현재 반복문에서의 인덱스를 나타낸다. C언어에서 43215가 출력되기 위해 해당 괄호에 들어갈 i를 순서대로 나열하면 1 2 3 4 0 에 해당한다. 0부터 4까지 증가하는 for문에서 해당 값이 나오게 하려면 괄호 안에는 n[i+1 % 5]를 이용하여 5로 나눈 나머지값을 호출하면 된다. 따라서, 완성된 코드의 해당 부분은 다음과 같이 작성된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
int main(void) {
int n[5];
int i;
for (i = 0; i < 5; i++) {
printf("숫자를 입력해주세요 : ");
scanf("%d", &n[i]);
}
for (i = 0; i < 5; i++) {
printf("%d", n[(i+1)%5]);
}
return 0;
}
|
cs |
2023 정보처리기사 실기 2회 11번
문제
2. JAVA 코드 문제. 가지고 있는 돈이 총 4620원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 보기의 조건에 맞춰 최소한의 코드를 통해 괄호안을 작성
변수 : m
연산자 : / , %
괄호 : [ , ] , ( , )
정수 : 1000, 500, 100, 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Problem{
public static void main(String[] args){
m = 4620;
a = ( );
b = ( );
c = ( );
d = ( );
System.out.println(a); //천원짜리 4장 출력
System.out.println(b); //오백원짜리 1개 출력
System.out.println(c); //백원짜리 1개 출력
System.out.println(d); //십원짜리 2개 출력
}
}
|
cs |
정답
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10
해설
이 문제는 주어진 금액인 4620원을 1000원, 500원, 100원, 10원으로 나누어 필요한 지폐 및 동전의 개수를 계산하는 것이다. JAVA에서 이러한 연산을 수행하기 위해서는 나눗셈 연산자(/)와 나머지 연산자(%)를 사용한다.
주어진 금액 m을 각각의 화폐 단위로 나누어서 필요한 지폐 및 동전의 수를 계산하려면, 다음과 같은 과정을 따른다.
- 천원짜리 지폐 수를 계산하기 위해 m을 1000으로 나눈다. m / 1000
- 오백원짜리 동전 수를 계산하기 위해, 먼저 1000원으로 나눈 나머지를 사용하고, 이 값을 500으로 나눈다: (m % 1000) / 500
- 백원짜리 동전 수를 계산하기 위해, 500원으로 나눈 나머지를 사용하고, 이 값을 100으로 나눈다: ((m % 1000) % 500) / 100
- 십원짜리 동전 수를 계산하기 위해, 100원으로 나눈 나머지를 사용하고, 이 값을 10으로 나눈다: (((m % 1000) % 500) % 100) / 10
2023 정보처리기사 실기 2회 3번
문제
3. c언어로 보기의 조건에 맞추어 알맞은 출력값을 작성
입력값은 홍길동, 김철수, 박영희 순서로 주어진다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include<stdio.h>
char n[30];
char *test() {
printf(입력하세요 : );
gets(n);
return n;
}
int main()
{
char * test1;
char * test2;
char * test3;
test1 = test();
test2 = test();
test3 = test();
printf(%s\n,test1);
printf(%s\n,test2);
printf(%s,test3);
}
|
cs |
정답
박영희
박영희
박영희
해설
이 C언어 코드에서는 test 함수를 통해 사용자로부터 문자열을 입력받아 전역 배열 n에 저장하고, 그 주소를 반환한다. main 함수에서는 이 test 함수를 세 번 호출하여 세 개의 문자열을 입력받고, 각각 test1, test2, test3 포인터 변수에 저장한다.
하지만 test1, test2, test3 모두 동일한 전역 배열 n의 주소를 가리키고 있다. 즉, 각 함수 호출 시 배열 n의 내용이 새로 입력받은 값으로 갱신된다. 결과적으로 test1, test2, test3 모두 마지막으로 입력받은 문자열을 가리키게 된다.
입력값이 "홍길동", "김철수", "박영희" 순서로 주어지면, 각 호출에서 "홍길동", "김철수"로 배열 n이 갱신되고, 마지막으로 "박영희"로 갱신된다. 따라서, test1, test2, test3 모두 마지막으로 입력된 "박영희"를 가리키게 된다.
그러므로 출력값은 다음과 같이 모두 "박영희"가 된다.