ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024-01-04
    정보처리기사 실기 2024. 1. 4. 20:07

    자바 스위치

    Switch(i)인 곳으로 가서 실행된다. i가 3이므로 case 3 으로 가서 k=0이 된다.

    중요한 점은 break문이 없기 때문에 break문이 나올 때까지 계속 실행된다는 점이다.

    결국 k=0에 3을 더하고 10을 빼고 1을 빼서 답은 -8이다.

     

    자바 배열

    3x5짜리 배열을 만들어야 하기 때문에 (1)에 3 (2)에 5가 정답이다.

    int[3][5]으로 만들면 실제로는 [0][0]부터 [2][4]까지 만들어진다는 것을 기억하자.

     

    C 포인터

    %s는 문자열 출력하는 포맷이며, 문자열 맨 끝 (보이지는 않지만 문자열 끝에는 사실 NULL 이 들어있다) 까지 출력하게 된다. %c는 문자를 출력하는 것이며, 한 글자만 출력하게 된다. %s는 포인터를 줘야하고, %c는 포인터가 아닌 값을 줘야한다. 값을 주기 위해서 포인터에 *을 붙여서 그 값을 꺼내게 된다.

    문자열이나 배열을 포인터로 취급할 때, 그 위치는 항상 가장 첫번째를 가리키게 된다. 문자열은 맨 앞 글자가 되고, 배열은 0번째 인덱스를 가리키게 된다. 따라서 printf("%s \n", p); 는 맨 첫 문자부터 끝까지 다 출력하므로 KOREA가 된다. 포인터에 값을 더하면 가리키는 위치가 뒤로 이동한다. p+3을 하면 문자열도 배열도 뒤로 3칸 더 가게 된다. 그래서 printf("%s \n", p+3); 은 세칸 더 뒤로간 E부터 끝까지 출력이므로 EA가 된다.

    %c로 출력하기 위해서 *p 를 붙여줬으므로 printf("%c \n", *p); 는 K가 되고, 3칸 뒤로 이동해서 * 붙였으므로 printf("%c \n", *(p+3)); 은 E가 된다.

    마지막 거는 헷갈리지 않아야하는데, *p 로 이미 K라는 값을 얻은 다음에 2를 더한 것이다. K+2 인데, K도 사실 우리 눈엔 문자이지만 프로그래밍 언어에게는 숫자이다. 아스키 코드 표에서 K는 숫자 107을 의미한다. 사실 K가 107인지는 중요하지 않고, K에서 2칸 더 뒤로 간 거는 알파벳 순서상 ABCDEFGHIJ KLMNOP... 이므로 M이라는 것만 알면 된다.

Designed by Tistory.