C와 기본 자료구조에 대한 점검을 하는 문제들입니다. 


1.  다음을 역순으로 출력하는 로직을 작성하시오.(5)


char arr+=”yahoo”;


void main()


{


}


 


2.  정수 n의 상위 2바이트와 하위 2바이트를 바꾸는 로직을 작성하시오. (5)


예) 0x12345678  e 0x56781234가 


 


 


3.  다음에 대하여 각각 설명하시오.(10)


a)  int *A(char);


b)  int (*B)(char);


c)  int (*C(char))();


d)  typedef int (*D)(char);


 


 


4.  다음의 결과를 예측하시오.(10)


 


char arr[2][8]=


{1,2,3,4,5,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0x10};


int *pi = arr+1;


char *pc = arr+1;


int i=0;


 


printf("%x ",++*pi);


printf("%x ",*++pi);


printf("%x\n",*pi++);


printf("%x ",++*pc);


printf("%x ",*++pc);


printf("%x\n",*pc++);


 


while(i<16)


{


      printf("%x ",arr[0][i]);


      i++;


}


 


 


5.  다음에 대해 각각 작성하시오.


a) 큐의 get함수(10)


void *get(queue *_in);


b) 연결리스트에서 노드 매달기(10)


void hang(node *now,node *pos);


c) 연결리스트에서 노드 제거하기(10)


void dehang(node *now);


6.  이진 트리에서 특정 데이터가 들어갈 위치를 찾는 로직을 구현하시오.(10)


typedef struct _TREE tree;


struct _TREE


{


    int (*compare)(void *data,void *key);


    leaf *root;


};


leaf *getparent(tree *tr,void *data);


7.  다음 수식을 수식 파서 트리로 도식하시오. (10)


23+4*6-4/2*3-62


8.  quick소트를 구현하시오.(10)


void quicksort(void **base,


int asize,int (*compare)(void *,void *));


9.  FILE *fopen(const char *fname,const char *mode);이다.


다음의 각 빈칸을 채우시오.(10)


   



 


-2-


10.  다음을 문자열 A에 문자 B의 개수를 카운팅하는 로직을 작성하시오.(5)


 


11.  정수 n의 상위 2바이트와 정수 b의 하위 2바이트를 정수 c에 대입하는 로직을 작성하시오. (5) 


 


12.  다음에 대하여 각각 설명하시오.(2*5=10 )


int (*A[4])(char);


char arr[5]+;


char *a+;


char (*b)+;


char **c;


 


void (*C(int, void(*t)(int)))(int); (보너스 10)


 


 


 


13.  다음의 결과를 예측하시오.(10)


char arr[2][3][4]=


{'a','b','c','d','e','f','g','h',


'i','j','k','l','m','n','o','p',


'q','r','s','t','u','v','w','\0',};



char (*b)[4] = arr[1]+1;


char *c=arr[0];



b[1][1] = 'k';


*(c+2) = 'o';


printf("%s\n",arr[0][0]);


14.  다음에 대해 각각 구현하시오.


연결리스트에서 now노드를 seat노드 뒤에 매다는 로직을 작성하시오.(10)


연결리스트를 해제하는 로직을 작성하시오.(10)


   스택의 pop함수를 작성하시오.(10)


   트리에 특정 leaf을 제거하는 함수를 작성하시오.(10)


   mergesort를 작성하시오.(10)


 


15.  다음 순으로 자료가 들어올 때 균형잡는 트리의 결과를 도식하시오.(10)


3 10 7 6 8 5 4 9 1 2


16.  fwrite함수의 signature를 명시하고 각 의미를 설명하시오.(10)


17.  다음의 결과를 예측하시오.(보너스-10)


    union T{ int ui; char uc; }t;


    union S{ unsigned uu; float uf; }s;


 


    t.ui = 0x12847636;


    s.uf = -12.625;


 


    printf("[%c]",t.uc);


    printf("[%x]",s.uu);


 


-3-


18.  strcpy함수를 작성하시오. (10) 


 


 


19.  다음에 대하여 각각 설명하시오.(10)


e)  int (*A[4])(char);


f)  void (*signal(int,void (*sig_handler)(int)))(int);


 


20.  다음의 결과를 예측하시오. (10)


char arr[2][3][6]=


{"hello","world","come","is","baby","."};


char *p = arr;


char (*p2)[4] = arr;


char (*p3)[2][2] = arr;


 


int i,j;



*p='H';


strcpy(p2+3,"Here");


strcpy(p2+6,"bit");


strcpy(p3[3][4]," a");


 


for(i=0;i<2;i++)


{


      for(j=0;j<3;j++)


      {


            printf("[%s]\n",arr[i][j]);


      }


}


 



21.  다음에 대해 각각 설명하시오.


d) 배열을 이용한 스택에서 pop을 구현하시오.(5)


e) 배열을 이용한 원형 큐에서 put을 구현하시오.(5)


f) fopen함수에 대해서 설명하시오.(10)


g) heap sort를 작성하시오.(10)


h) 23+4/2-9*3/2+4를 수식 파서 트리로 도식하시오.(10)


 


22.  이진 트리에서 모든 leaf을 제거하는로직을 작성하시오.(10)


23.  더미 있는 이중 연결리스트에서 리스트 초기화 로직을 작성하시오.(10)


24.  연결리스트에서 리스트 해제화 로직을 작성하시오.(10)


 


-참고-


 


25.  다음의 결과를 예측하시오.(10) 


int x=0,y=0,z=0;


if(x++ && y++ || z--);


printf(“%d%d%d”,x,y,z);


 


 

26.  문자열 A의 모든 소문자를 대문자로 바꾸는 로직을 작성하시오. (10) 


 


 

27.  자동 변수, 지역변수, 정적변수, 전역변수의 정의 및 차이점을 설명하시오.(20)


 

28.  링크드 리스트로 짠 트리구조에서 Left child와 Right child를 바꾸는 로직을 작성하시오. (10)   


29.  다음 구문중 error나 warning, 혹은 논리적으로 잘못된 부분을 지적하고 바르게 고치시오. (20)


char arr[3]+ =


{"hello","world","korea"};



char str+="hello";


char str2+;


 


char *pa[5];


char (*pb)+;


void *vp;



int cnt = 0;



pa = arr;


pb = arr;


vp = arr;


 


str2 = str;


if(arr[0]==arr[1])


{


      printf("Is Same\n");


}


else


{


      printf("Is not Same\n");


}


 


strcpy(pa[0],"aaa");


strcpy(pb[0],"aaa");


strcpy(vp[0],"aaa");


*pa = "aaa";


*pb = "aaa";


*vp = "aaa";


 


30.  다음 각각에 대하여 설명하시오. (30점)


a) 스택과 큐에 대하여 설명하시오.


b) 저수준 I/O와 고수준 I/O에 대하여 설명하시오.


c) 선형 자료구조와 비선형 자료구조에 대하여 설명하시오.


 


31.  다음의 결과를 예측하시오.(10) 


int x=0,y=0,z=0;


if(x++ || y++ && z--);


printf(“%d%d%d”,x,y,z);


 


 

32.  문자 A의 하위 4바이트와 문자 B의 상위 4바이트를 문자 C로 옮기는 로직을 작성하시오. (10) 


 


 

33.  지역변수,전역 변수, 동적 메모리 할당, 함수에 대한 프로그램 메모리에 대하여 설명하시오. (20)


 


 

34.  이진 트리에 3,7,6,8,9,10,24,13순으로 메달았을 때 전위 운행, 중위 운행, 후위 운행에 따라 방문하는 순서를 기술하시오. (10)




35.  이진 트리에서 전체 Leaf을 해제화 하는 로직을 작성하시오. (10)


 


36.  다음 각각에 대하여 설명하시오. (20점)


d) 저수준 I/O와 고수준 I/O에 대하여 설명하시오.


e) 선형 자료구조와 비선형 자료구조에 대하여 설명하시오.


 


37.  다음 결과를 예측하시오.(10)


int a=0xab340845;


 


while(a)


{


    if(a%2)


    {


        putchar(‘1’);


}


else


{


    putchar(’0’);


}


a = a>>1;


}


38. 


39.  다음 문제를 해결하시오.


정수형 변수 a의 상위 8비트단위로 각각을 char형 변수 b,c,d,e로 옮기는 로직을 완성하시오.(5점)


 


 


40.  다음 문제를 해결하시오.


float에 실수가 저장되는 방식에 대하여 논하시오.(5점)


 


41.  다음 각각을 해결하시오.


문자 배열에 있는 각 word의 시작위치를 저장하는 로직을 완성하시오.(5점)


 


문자 배열에 숫자 문자를 skip하는 로직을 완성하시오.(10점)


42.  다음 각각을 해결하시오.


스택에 대하여 논하시오.(5점)


 


스택을 이중 연결리스트로 구현하시오. (10점)


 


43.  다음 각 문제를 해결하시오.


이중 연결리스트의 모든 노드를 삭제하는 해제화 로직을 작성하시오.(5점)


 


 


이진 트리의 모든 leaf의 데이터를 출력하는 로직을 완성하시오.(5점)


 


  


45.  다음 문제를 해결하시오.


char형 변수 a의 하위4비트와 상위 4비트를 바꾸는 로직을 완성하시오. (5점) 


 


46.  다음 문제를 해결하시오.


다음의 예제를 실행하였을 때 결과를 예측하시오.(5점)


 union Test


    {


       int  ival;


       float fval;


    };


 


     union Test test;


     void main()


     {


        test.fval = -1.5;


        printf(“[%x]\n”,test.ival);


        test.fval = -6;


        printf(“[%x]\n”,test.ival);


  }


 


47.  다음 각각을 해결하시오.


문자 배열에 있는 각 word의 개수를 카운팅하는 로직을 완성하시오.(5점)


 


 


문자 배열을 정수로 변환하는 로직을 완성하시오.(5점)


 


 


48.  다음 각각을 해결하시오.


큐에 대하여 논하시오.(5점)


 


큐를 배열로 구현하시오.(원형 큐를 구현하시오.)(15점)


 


 


49.   각 목적에 맞게 코드를 완성하시오.(10점)


char flag = 0;


   ...중략...


void fnSet()


{


       char check = 0;


printf(“출석한 학생의 번호를 입력하세요.\n”);


 


scanf(“%c”,&check);


//to do


}


void fnReSet()


{


       char check = 0;


printf(“결석한 학생의 번호를 입력하세요.\n”);


 


scanf(“%c”,&check);


//to do


}


int fnStatus()


{


       char check = 0;


printf(“출석 여부를 확인 할 학생의 번호를 입력하세요.\n”);


 


scanf(“%c”,&check);


//to do


}


 


 


50.  다음의 결과를 예측하시오.(15점)


#in#include <stdio.h>


inn#include <conio.h>


#in#include <string.h>


 


chachar arr[6]+={"what","are","they","doing","home","?"};


voivoid fnA()


{  {  


    char *p = arr[2];


    *p++ = 'c';


    strcpy(p,"ou");


\  }


}


 


voivoid fnB()


   {


     char (*p)+ = arr+2;


     **p++='y';


      strcpy(p[1]+1,"ere");


   }


 


voi void main()


    {


      int i = 0;


      fnA();


      fnB();


      while(i<6)


      {


        printf("%s ",arr[i]);


        i++;


      }


}   }


51.  다음의 결과를 예측하시오.(5)


int x = 0;


int y = 0;


int z = 0;


 


if(++x && ++y || ++z)


{


z++;


}


y++;


printf(“%d %d %d”,x,y,z);


 


52.  입력받은 문자열의 소문자를 모두 대문자로 변경하는 함수를 작성하시오.(10점)


 


53.  입력받은 첫문자열 중 두번째 문자열이 있는 위치(메모리 주소)를 찾는 로직을 작성하시오.(10점)


 


54.  다음을 비교 설명하시오.(10점)


char arr[]=”hello”;


char *p = “hello”;


 


55.  다음의 결과를 예측하시오.(10점)


char arr[4][5]={“1234”,”abcd”,ABCD”,”test”};


void fnA()


{


int *p = (int *)(arr+3);


*p++ = ‘4’;


++*p ;


}


 


void fnB()


{


char (*p)[5] = arr;


     p = p + 1;


     strcpy(p[1]+1,"ome");


}


void main()


{


    int i = 0;


    fnA();


    fnB();


    while(i<4)


    {


         printf(“%s “,arr[i]);


         i++;


    }


    


}


 


56.  다음 문제의 결과를 예측하시오.(10점)


union Test


{


    int ival;


    float fval;


};


 


union Test temp;


 


void main()


{


    temp.fval = -34.675;


    printf(“%x”,temp.ival);


}


 


57.  입력매개변수로 온 정수의 상위 2바이트와 하위 2바이트를 바꾸는 함수를 작성하시오.(10점)


 


58.  다음 세 문맥에 대해서 설명하시오.(15점)


typedef int *(*FnTest1)(int);


int *(*FnTest2)(int);


int *(*FnTest3[4])(int);


 


 


59.  전역변수, 지역변수, 정적변수에 대하여 각각 설명하시오.(20점)


 


60.  스택과 큐를 비교 설명하시오.(10점)


 


61.  배열과 연결리스트를 비교 설명하시오.(10점)


 


62.  연결리스트와 트리를 비교 설명하시오.(10점)


 


63.  연결리스트로 구현된 이진 트리의 왼쪽 자식과 오른쪽 자식을 바꾸는 함수를 작성하시오.(20점)


64.  balanced-tree에 대하여 설명하시오.(10점)


 


65.  parse-tree를 이용한 수식 파서에 대하여 설명하시오.(10점)


 


66.  퀵 소트를 구현하시오.(10점)


 


67.  힙 소트를 구현하시오(10점)


 


68.  머지(병합) 소트를 구현하시오.(10점)


 


 






60점 넘어야 합격이라는데 40점대나오네...

아... ㅅㅂ 이거 그냥 좆소에서는 시험도 안보는데 학원따위가 왜 시험을 보는거지?

학원면접따위에서 개털릴생각하니 아찔하다..