< C++ >
# 1. 다음은 C언어 코드의 문제이다. 보기의 조건에 맞도록 밑줄 친 부분에 알맞은 코드를 작성하시오.
보기: 입력값이 54321일 경우 출력값이 43215로 출력되어야 한다.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#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", _____);
}
return 0;
}
n[ ( i + 1 ) % 5 ]
i = 0 // n[1]
i = 1 // n[2]
i = 2 // n[3]
i = 3 // n[4]
i = 4 // n[0]
# 2. 다음은 c언어의 코드이다. 보기의 조건에 맞추어 알맞은 출력값을 작성하시오.
입력값은 홍길동, 김철수, 박영희 순서로 주어진다.
[소스코드]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char n[30];
char* test()
{
printf("입력하세요: ");
fgets(n, sizeof(n), stdin);
n[strcspn(n, "\n")] = '\0'; // fgets의 입력 개행을 제거하기 위해 별도로 추가 되었습니다
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\n", test3);
}
포인터 test1, test2, test3 선언
test1 = test()
test()를 호출해 배열 n에 홍길동을 입력
test2 = test()
test()를 호출해 배열 n에 김철수를 입력
test3 = test()
test()를 호출해 배열 n에 박영희를 입력
배열 n의 주소를 출력해 보면, 각 함수를 호출할 때마다 동일한 배열의 주소에 배열을 초기화하고 있다
입력하세요: 홍길동
홍길동의 주소 : 009CA4C4
입력하세요: 김철수
김철수의 주소 : 009CA4C4
입력하세요: 박영희
박영희의 주소 : 009CA4C4
test1, test2, test3을 출력하면 마지막에 입력된 박영희가 배열 n의 최종 문자열이다
[출력결과]
박영희
박영희
박영희
# 3. 다음은 C언어의 문제이다. 알맞은 출력값을 작성하시오.
[소스코드]
#include <stdio.h>
int main()
{
int n[3] = { 73, 95, 82 };
int sum = 0;
for (int i = 0; i < 3; i++)
{
sum += n[i];
}
switch (sum / 30)
{
case 10:
case 9:
printf("A");
case 8:
printf("B");
case 7:
case 6:
printf("C");
default:
printf("D");
}
return 0;
}
배열 n을 {73, 95, 82}로 초기화
정수 sum을 0으로 초기화
반목문을 통해 배열의 요소를 모두 더함
sum / 30 = 250 / 30 = 8
case 8부터 시작
[출력결과]
BCD
# 4. 다음은 소스코드의 알맞은 출력을 작성하시오.
[소스코드]
#include <stdio.h>
int main()
{
int c = 0;
for (int i = 1; i <= 2023; i++)
{
if (i % 4 == 0)
c++;
}
printf("%d", c);
}
정수 c를 0으로 초기화
반복문을 순회하며 i가 4의 배수일 때마다 c++
[출력결과]
505
# 5. 다음은 C언어 문제이다. 알맞은 출력값을 작성하시오.
[소스코드]
#include <stdio.h>
#define MAX_SIZE 10
int isWhat[MAX_SIZE];
int point = -1;
void into(int num)
{
if (point >= 10)
printf("Full");
isWhat[++point] = num;
}
int isEmpty()
{
if (point == -1)
return 1;
return 0;
}
int isFull()
{
if (point == 10)
return 1;
return 0;
}
int take()
{
if (isEmpty() == 1)
printf("Empty");
return isWhat[point--];
}
int main()
{
int e;
into(5);
into(2);
while (!isEmpty())
{
printf("%d", take());
into(4);
into(1);
printf("%d", take());
into(3);
printf("%d", take());
printf("%d", take());
into(6);
printf("%d", take());
printf("%d", take());
}
return 0;
}
#define MAX_SIZE 10 // 배열 isWhat의 크기를 10으로 사전에 정의
크기가 10인 배열 isWhat 선언
정수 point를 -1로 초기화
위 문제는 스택 구조의 push, pop 동작을 표현한 문제다
into(5) // push 5
into(2) // push 2
take() // pop 2
into(4) // push 4
into(1) // push 1
take() // pop 1
into(3) // push 3
take() // pop 3
take() // pop 4
into(6) // push 6
take() // pop 6
take() // pop 5
[출력결과]
213465
# 6. 다음 코드는 선택정렬 구현에 관한 문제이다. 빈칸에 알맞은 연산자를 보기에서 골라 작성하시오.
보기
<, <=, =>, >, ==, /, %
[소스코드]
#include <stdio.h>
int main()
{
int E[] = { 64,25,12,22,11 };
int n = sizeof(E) / sizeof(E[0]);
int i = 0;
do
{
int j = i + 1;
do
{
if (E[i] () E[j])
{
int tmp = E[i];
E[i] = E[j];
E[j] = tmp;
}
j++;
} while (j < n);
i++;
} while (i < n - 1);
for (int i = 0; i <= 4; i++)
printf("%d ", E[i]);
return 0;
}
E[i] > E[j] 비교를 하여 E[i], E[j] 자리를 바꾸는 것이기 때문에 빈칸에 들어갈 연산자는 >
< Java >
# 1. 다음은 JAVA 코드 문제이다. 가지고 있는 돈이 총 4620원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 보기의 조건에 맞춰 최소한의 코드를 통해 괄호 안을 작성하시오.
아래 주어진 항목들을 갖고 괄호(1) ~ (4) 안의 코드를 작성
변수 : m
연산자 : / , %
괄호 : [ , ] , ( , )
정수 : 1000, 500, 100, 10
[소스코드]
public class good
{
public static void main(String[] args)
{
int m = 4620;
int a = (1);
int b = (2);
int c = (3);
int d = (4);
System.out.println(a); //천원짜리 4장 출력
System.out.println(b); //오백원짜리 1개 출력
System.out.println(c); //백원짜리 1개 출력
System.out.println(d); //십원짜리 2개 출력
}
}
최소한의 코드를 작성하라고 했으니
(1)에는 m / 1000
(2)에는 (m % 1000) / 500
(3)에는 (m % 500) / 100
(4)에는 (m % 100) / 10
[출력결과]
4
1
1
2
# 2. 다음은 자바에 대한 문제이다. 알맞은 출력값을 작성하시오.
[소스코드]
public class good
{
public static void main(String[] args)
{
String str1 = "Programming";
String str2 = "Programming";
String str3 = new String("Programming");
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str1.equals(str3));
System.out.println(str2.equals(str3));
}
}
자바는 String은 불변이고, String 리터럴은 상수 풀(String Constant Pool)이라는 특수한 메모리 공간에서 관리되는데, 이 풀은 메모리 내에서 같은 문자열을 여러 번 생성하지 않기 때문에 str1과 str2는 같은 객체를 참조한다
str3는 new String("Programming")으로 새로운 객체를 힙 메모리에 생성하여 str1과 str2와는 다른 객체를 참조한다
이해를 돕기 위해 객체의 메모리 주소를 해쉬값으로 표현해 주는 identityHashCode를 사용해서 출력해 보자
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
System.out.println(System.identityHashCode(str3));
1915910607 // str1
1915910607 // str2
284720968 // str3
서로 다른 메모리 주소를 참조하고 있는 것을 확인할 수 있다
==은 메모리 주소를 비교, equals는 메모리 주소 내 값이 같은지 비교
str1 == str2 // true
str1 == str3 // false
str1.equals(str3) // true
str2.equals(str3) // true
[출력결과]
true
false
true
true
< Python >
# 1. 다음 파이썬 코드에서 알맞은 출력값을 작성하시오.
a = "engineer information processing"
b = a[: 3]
c = a[4: 6]
d = a[28: ]
e = b + c + d
print(e)
b = "eng"
c = "ne"
d = "ing"
e = "engneing"
[출력결과]
engneing
'정보처리기사' 카테고리의 다른 글
[2024년 1회] (2) | 2024.10.10 |
---|---|
[2023년 3회] (0) | 2024.10.07 |
[2023년 1회] (0) | 2024.10.07 |
[2022년 3회] (0) | 2024.10.04 |
[2022년 2회] (0) | 2024.10.04 |