1. 주석 내용을 코드로 작성하세요.
int main() 
{
    int a;
    int *p = &a;

    //p를 이용해서 정수를 입력받기

    //p를 이용해서 입력받은 정수를 출력

    return 0;
}
  1. swap 함수를 완성하세요.
void swap() 
{

}

int main() 
{
    int a = 5;
    int b = 10;

    printf("교환 전: a = %d, b = %d\\n", a, b); //5 10 출력
    swap(&a, &b);
    printf("교환 후: a = %d, b = %d\\n", a, b); //10 5 출력

    return 0;
}
  1. 포인터를 활용해 배열을 순회하며 값을 출력하세요.
int main() 
{
    int i;
    int arr[] = {1, 2, 3, 4, 5};
    int *p = arr;

    for (i = 0; i < 5; i++)
    {
        //p를 활용해 배열의 값 출력
    }

    return 0;
}
  1. 아래 주석 내용을 작성하세요.
int main() 
{
    int i, j;
    int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    // 2차원 배열에 대한 포인터 변수 p를 정의

    for (i = 0; i < 3; i++) 
    {
        for (j = 0; j < 3; j++) 
        {
            printf("%d ", ); //p를 이용해 출력
        }
        printf("\\n");
    }

    return 0;
}
  1. 아래 코드를 완성하세요.
int main() 
{
    int *arr;
    int size;
    int i;

    scanf("%d", &size);

   // 동적 메모리 할당

    for (i = 0; i < size; i++) 
    {
        arr[i] = i + 1;
    }

    for (i = 0; i < size; i++) 
    {
        printf("%d ", arr[i]);
    }

    free(arr);

    return 0;
}
  1. 아래 주석 내용을 코드로 작성하세요.
int main() 
{
    int n;
    int i;
    scanf("%d", &n);

    // 포인터 배열 동적 할당

    for (i = 0; i < n; i++) 
    {
        // 문자열 동적 할당, 크기는 50
        printf("%d 번째 문자열을 입력하세요: ", i + 1);
        // 문자열 입력받기
    }

    for (i = 0; i < n; i++) 
    {
        printf("%d 번째 문자열은 %s\\n", i + 1, str[i]);
        free(str[i]); 
    }

    free(str);
    return 0;
}
  1. 두 자연수 N, M을 입력받아 동적할당을 통해 N * M 행렬과 M * N 행렬을 생성한다. 생성한 두 행렬에 랜덤하게 값을 채운 후 두 행렬을 각각 출력한다. 두 행렬의 곱셈 결과를 화면에 출력한다.