티스토리 뷰

컴퓨터프로그래밍 12주 Quiz

 

(quiz-1) 정수형 변수 x, y, z 각각의 주소(포인터)를 보관하는 px, py, pz 변수를 선언하고 화면과 같이 출력될 수 있도록 완성하시오.

        (px, py, pz 의 값은 화면과 다르게 나올 수 있다.)

 

 

(1) 실행화면 Capture

(2) 프로그램 소스코드

HWP에서 Text 붙여넣기 할 때 색상이 잘못되는 경우 해결 방법

(Ctrl-A 전체선택 > 서식 > 글자모양 > 테두리/배경 > 면색 --> 흰색)

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void main()

{
    int x = 1, y = 2, z = 3;

    // 포인터 변수 px, py, pz 선언
    int* px, * py, * pz;

    // px, py, pz를 각각 x, y, z의 주소로 지정
    px = &x, py = &y, pz = &z;

    // 아래 5라인을 같은 결과가 나오도록 px, py, pz 로만 완성

    // x = 1000
    *px = 1000;

    // x += 2;
    *px += 2;

    // y = 2000
    *py = 2000;

    // y -= 3;
    *py -= 3;

    // z = x + y
    *pz = *px + *py;

    // 아래 부분은 수정하지 말 것

    printf("px=%X py=%X pz=%X\n", px, py, pz);

    printf("x=%d y=%d z=%d\n", x, y, z);

    printf("*px=%d *py=%d *pz=%d\n", *px, *py, *pz);

}

(quiz-2) iputxy()는 정수 x, y를 입력받고 swapxy()는 두 정수를 교환하는 함수이다. 완성하시오.

 

 

(1) 실행화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

// x, y 입력

void inputxy(int *x, int *y) // () 안의 변수 선언도 완성

{
    scanf("%d %d", x, y);
}

// x, y를 교환

void swapxy(int* x, int* y) // () 안의 변수 선언도 완성

{
    int temp = *x;
    *x = *y;
    *y = temp;
}

void main() // main은 수정할지 말 것

{

    int x, y;

    inputxy(&x, &y);

    printf("swapxy()전 : x=%d y=%d\n", x, y);

    swapxy(&x, &y);

    printf("swapxy()후 : x=%d y=%d\n", x, y);

}

 

quiz-3) 다음과 같이 배열 arr[10]에 데이터가 있다. print_array(), compute_sum(), compute_avg(), find_max(), find_min() 함수는 각각 배열을 출력, 배열의 합을 return, 평균값을 계산해서 return, 배열의 최대값과 최소값을 구해서 return 하는 함수들이다. 배열 기호 []를 사용하지 말고 포인터만 사용하여 함수들을 완성하시오.

 

(1) 실행화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void print_array(int* arr, int n) // 배열값을 출력 [] 사용하지 말 것

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

int compute_sum(int* arr, int n) // 배열의 합을 return [] 사용하지 말 것

{

    int i, sum = 0;

    for (int i = 0; i < n; i++)
    {
        sum += arr[i];
    }

    return sum;
}

double compute_avg(int* arr, int n) // 배열의 평균을 return [] 사용하지 말 것

{
    double sum = 0;
    for (int i = 0; i < n; i++)
    {
        sum += arr[i];
    }

    return sum / n;
}

int find_max(int* arr, int n) // 배열에서 최대값을 찾아서 return [] 사용하지 말 것

{

    int i, max = arr[0];

    for (int i = 0; i < n; i++)
    {
        if (max < arr[i]) max = arr[i];
    }

    return max;
}

int find_min(int* arr, int n) // 배열에서 최소값을 찾아서 return [] 사용하지 말 것

{

    int i, min = arr[0];

    for (int i = 0; i < n; i++)
    {
        if (min > arr[i]) min = arr[i];
    }

    return min;
}

void main() // main은 수정하지 말 것

{

    int arr[10] = { 10, 30, 5, 21, 44, 13, 120, 88, 9, 101 };



    print_array(arr, 10);

    printf("합 = %d\n", compute_sum(arr, 10));

    printf("평균 = %lf\n", compute_avg(arr, 10));

    printf("최대 = %d\n", find_max(arr, 10));

    printf("최소 = %d\n", find_min(arr, 10));
}

 

(quiz-4) 다음과 같이 배열 arr[10]에 데이터가 있다. find_max(), find_min() 함수는 각각 배열의 최대값 또는 최소값과 함께 몇번째 배열인지까지 찾아주는 함수들이다.

배열 기호 []를 사용하지 말고 포인터만 사용하여 함수들을 완성하시오.

 

 

(1) 실행화면 Capture

 

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

// n개의 배열에서 최대값과 그 index를 *max, *index에 담아서 return

void find_max(int* arr, int* max, int* index, int n)

{
    *max = arr[0];
    // void 이므로 return 값은 없고 max, index에 값을 넘겨주어야 함
    for (int i = 0; i < n; i++)
    {
        if (arr[i] > *max) {
            *max = arr[i];
            *index = i;
        }
    }
}

// n개의 배열에서 최소값과 그 index를 *min, *index에 담아서 return

void find_min(int* arr, int* min, int* index, int n)

{
    // void 이므로 return 값은 없고 min, index에 값을 넘겨주어야 함
    *min = arr[0];
    // void 이므로 return 값은 없고 max, index에 값을 넘겨주어야 함
    for (int i = 0; i < n; i++)
    {
        if (arr[i] < *min) {
            *min = arr[i];
            *index = i;
        }
    }
}

void main() // main은 수정하지 말 것

{
    int arr[10] = { 10, 30, 5, 20, 44, 13, 120, 88, 9, 101 };

    int max, min, index;

    find_max(arr, &max, &index, 10);

    printf("최대 : arr[%d]=%d\n", index, max);

    find_min(arr, &min, &index, 10);

    printf("최소 : arr[%d]=%d\n", index, min);
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함