1. 다음은 C언어 소스코드이다. 출력 결과를 쓰시오 (2020년 1회)
#include <stdio.h>
void main(){
int i, j;
int temp;
int a[5] = {75,95,85,100,50};
for(i=0; i<4; i++){
for(j=0; j<4-i; j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(i=0; i<5; i++){
printf("%d", a[i]);
}
}
해설
#include <stdio.h>
void main(){
int i, j;
int temp;
int a[5] = {75,95,85,100,50};
for(i=0; i<4; i++){ // 반복할 때 i 는 0, 1, 2, 3 이됨
for(j=0; j<4-i; j++){
// i = 0일때, 반복하면 J는 0,1,2,3
// i = 1일때, 반복하면 J는 0,1,2
// i = 2일때, 반복하면 J는 0,1
// i = 3일때, 반복하면 J는 0
if(a[j] > a[j+1]){ //만약 a[0] > a[1] 일때 즉 int a[5] = {75,95,85,100,50}; 에서 앞뒤를 75 > 95일때 만 이 if문을 탄다.
// a[1] > a[2] 는 95 > 85 에 해당되니
temp = a[j]; //임시 변수 temp에 95 저장
a[j] = a[j + 1]; // a[1]자리엔 a[2] 즉 85 저장
a[j + 1] = temp; // a[2]자리엔 임시변수 temp에 있던 95 저장
// 즉 현재값이 그 다음값 보다 크면 서로 자리를 바꾸게 된다.
// 마지막 a[4]에는 가장 큰값이 저장하게 된다.
}
}
}
for(i=0; i<5; i++){
printf("%d", a[i]); // 개행없이 출력
}
}
답 = 50, 75, 85, 95, 100
2. 다음은 자바소스이다. 출력 결과를 쓰시오 (2020년 1회)
public class good {
public static void main(String[] args){
int i = 3;
int k = 1;
swich (i) {
case 0:
case 1:
case 2:
case 3: k = 0;
case 4: k += 3;
case 5: k -= 10;
default: k--;
}
system.out.print(k);
}
}
답 : -8
해설
public class good {
public static void main(String[] args){
int i = 3;
int k = 1;
swich (i) { // i = 3이기 때문에 case 3으로간다.
case 0:
case 1:
case 2:
case 3: k = 0; // k = 0 -> break가 없으므로 계속 defalut까지 연산한다.
case 4: k += 3; // k = 3
case 5: k -= 10; // k = -7
default: k--; // k = -8
}
system.out.print(k); // -8
}
}
답 : -8
3. 다음은 파이썬 코드이다. 출력 결과를 쓰시오. (2020년 2회)
a={'일본','중국','한국'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩','한국','태국'})
print(a)
해설
# 세트는 집합이므로 출력 순서가 상관 없다. , 기존데이터가 있으면 무시
a={'일본','중국','한국'}
a.add('베트남') # a = {일본, 중국, 한국, 베트남}
a.add('중국') # a = {일본, 중국, 한국, 베트남}
a.remove('일본') # a = {중국, 한국, 베트남}
a.update(['홍콩','한국','태국']) # a = {중국, 한국, 베트남, 홍콩, 태국}
print(a) # a = {중국, 한국, 베트남, 홍콩, 태국}
4. 다음은 자바 코드이다. 다음 밑줄에 들어갈 키워드를 쓰시오.(2020년 2회)
class A{
private int a;
public A(int a){
this.a = a;
}
public void display(){
system.out.println("a=" + a);
}
}
class B extends A {
public B(int a){
super(a);
super.display();
}
}
public class good {
public static void main(String[] args){
B obj = new B(10);
}
}
해설
class A{
private int a;
public A(int a){
this.a = a;// 4)넘겨받은 10을 a에 대입
}
public void display(){
system.out.println("a=" + a); //6)대입받은 a 출력
}
}
class B extends A {
public B(int a){
super(a); //3) 상위클래스 생성자 접근 = A클래스의 생성자중 int 매개변수 가지고 있는 생성자 접근
super.display(); //5) 상위클래스의 display메서드 실행
}
}
public class good {
public static void main(String[] args){ //1) 소스는 main부터 시작
B obj = new B(10); //2) B클래스의 생성자중 int형 매개변수로 가지고 있는생성자 접근
}
}
답 a=10
5. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.(2020년 3회)
#include <stdio.h>
void main(){
int i=0, c=0;
while (i<10){
i++;
c*=i;
}
printf("%d",c);
}
해설
#include <stdio.h>
void main(){
int i=0, c=0;
while (i<10){
i++; //후위연산자
c*=i; // c는 = 0, 어떤 값을 곱해도 0
}
printf("%d",c);
}
답 : 0
6. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.(2020년 3회)
include <studio.h>
int r1(){
return 4;
}
int r10(){
return (30+r1());
}
int r100(){
return (200+r10());
}
int main(){
printf("%d\n", r100());
return 0;
}
해설
//재귀함수문제
include <studio.h>
int r1(){ // 4) r1 = 4
return 4;
}
int r10(){ //3) r10 = 30 + r1() -> r1()호출
return (30+r1());
// 5) r1 = 4, 34리턴
}
int r100(){ // 2) r100 = 200 + r10() -> r10()호출
return (200+r10());
// 6) r10 = 34, 234리턴
}
int main(){ //시작점
printf("%d\n", r100()); //1) r100 호출
// 7) r100 = 234
return 0;
}
답 234
7. 다음은 자바 코드이다. 출력 결과를 쓰시오. (2020년 3회)
public class good {
public static void main(String[] args){
int i=0;
int sum=0;
while (i<10){
i++;
if(i%2 ==1)
continue;
sum += i;
}
System.out.println(sum);
}
}
해설
public class good {
public static void main(String[] args){
int i=0;
int sum=0;
while (i<10){ // i가 0일때, i=1
i++; // i = 1, i=2
if(i%2 ==1) // 나머지가 1일때 다시 위로올라감
continue;
sum += i; // sum = 2 + 4 + 6 + 8 + 10
}
System.out.println(sum);
}
}
답 30
8. 다음은 자바 코드이다. 출력 결과를 쓰시오. (2020년 3회)
abstract class vehicle{
private String name;
abstract public String getName(String val);
public String getName(){
return "vehicle name:" + name;
}
public void setName(String val){
name = val;
}
}
class Car extends Vehicle{
public Car(String val){
setName(val);
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class good {
public Static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
}
}
해설
abstract class vehicle{
private String name;
abstract public String getName(String val);
public String getName(){ // 4) 파라미터 없는 getName
return "vehicle name:" + name; // vehicle name : Spark를 리턴
}
public void setName(String val){
name = val;
}
}
class Car extends Vehicle{
public Car(String val){ // 2) 넘어온 val = Spark, name에 Spark 대입
setName(val);
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class good {
public Static void main(String[] args){ //시작점
Vehicle obj = new Car("Spark"); //1) Car 클래스의 String 매개변수를 입력하는 매서드로 이동
System.out.print(obj.getName()); //3) 생성자 obj의 getName()-> 파라미터없는 getName 호출
//5) 리턴된것 출력
}
}
답 : vehicle name : Spark
9. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. 1,2에 알맞는 값을 적으시오. (2020년 4회)
[출력결과] : 00001010
class good {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1. ) {
a[i++] = ( 2. );
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]);
}
}
}
해설
[출력결과] : 00001010
class good {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1. ) { //2) i <= 7 , 8번 반복한다는 말
a[i++] = ( 2. ); // a[i]는 0과 1만 들어가야하기 때문에 n%2
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]); //8자리를 출력해야함 a[0]~ a[7] = 00001010
}
}
}
답 : 1.i <= 7, 2.n%2
10. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오. (2020년 4회)
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol;
for item in sub;
print(item, end = '')
print()
해설
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0]) # [1,2,3]
print(lol[2][1]) # 7
for sub in lol; # sub 는 [1,2,3], [4,5] , [7,8,9]
for item in sub; #item은 1,2,3 / 4,5 / 7,8,9
print(item, end = '') # 개행하지 않음 = 1 2 3 / 4 5/ 6 7 8 9
print()# 개행
답
[1,2,3]
7
123
45
6789
11. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오. (2020년 4회)
#include <stdio.h>
void main(){
char *p = "KOREA"
printf("%s\n" , p);
printf("%s\n" , p+3);
printf("%c\n" , *p);
printf("%c\n" , *(p+3));
printf("%c\n" , p+2);
해설
#include <stdio.h>
void main(){
char *p = "KOREA"
printf("%s\n" , p); // P주소부터 null을 만날때 까지 KOREA
// K=p, O=p+1, R=p+2 ~ 이렇게 진행됨
printf("%s\n" , p+3); // p+3주소부터 null을 만날때까지 EA
printf("%c\n" , *p); // *c는 문자를 뜻하고 P가 가리키는 곳은 K
printf("%c\n" , *(p+3)); // E
printf("%c\n" , *p+2); // P의 주소값은 K인데 여기에 +2를 했으므로 M (K의 다다음 스펠링)
답
KOREA
EA
K
E
M
12. 다음은 자바 소스 코드이다. 출력 결과를 쓰시오. (2020년 4회)
class parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){
if(num<=1) return num;
return compute(num-1) + compute(num-3);
}
}
class good{
public static void main (String[] args){
parent obj = new Child();
System.out.print(obj.compute(4));
}
}
해설
class parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){ //매개변수 받는 게 동일하게 있을때 자식클래스로 오버라이딩
if(num<=1) return num; //4 <=1 일때 바로리턴 아니면 재귀함수 호출
return compute(num-1) + compute(num-3); // compute(3) = 0 + compute(1) = 1반환
// compute(3) = compute (2) + compute (0)
// compute(2) = compute (1) + compute (-1)
// 결론 compute(3)은 0이다.
}
}
class good{
public static void main (String[] args){ // 1) 메인 시작
parent obj = new Child(); //child 클래스 생성자
System.out.print(obj.compute(4)); // 2)obj의 compute 매서드에 int(4)를 매개변수로 받는곳 찾아간다.
}
}
답 1
'|Developer_Study > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 8과목 - 서버 프로그램 구현 (0) | 2023.02.27 |
---|---|
[정보처리기사 실기] 7과목 - SQL 응용 (0) | 2023.02.22 |
[정보처리기사 실기] 5과목 - 인터페이스구현 (0) | 2023.02.20 |
[정보처리기사 실기] 4과목 - 통합구현 (0) | 2023.02.15 |
[정보처리기사 실기] 3과목 - 데이터 입출력 구현 (0) | 2023.02.08 |
댓글