728x90

문제1) 다음과 같이 두개의 int형 포인터 변수와 길이가 5인 int형 배열을 선언한다.

int *maxPtr;

int *minPtr;

int arr[5];

 

그리고 MaxAndMin이란 이름의 함수를 정의하고 이를 호출하면서 위의 배열과 두 포인터 변수에 대한 정보를 전당ㄹ하자. 어떠한 정보를 어떻게 전달할지는 여러분이 결정할 몫이다. 그리고 함수 호출이 완료되면 포인터 변수 maxPtr에는 가장 큰 값이 저장된 배열요소의 주소 값이, inPtr에는 가장 작은 값이 저장된 배열요소의 주소 값이 저장되어야 한다.

#include <stdio.h>
void MaxAndMin(int *arr1,int len, int **maxp,int **minp){
    int *max, *min;
    max=min=&arr1[0];
    for(int i=0;i<len;i++){
        if(*max<arr1[i]){
            max=&arr1[i];
        }
        if(*min>arr1[i]){
            min=&arr1[i];
        }
    }
    *maxp=max;
    *minp=min;
}
int main(void){
    int *maxPtr;
    int *minPtr;
    int arr[5];
    for(int i=0;i<5;i++){
        scanf("%d", &arr[i]);
    }
    MaxAndMin(arr,sizeof(arr)/sizeof(int), &maxPtr, &minPtr);
    printf("%d %d", *maxPtr, *minPtr);
    return 0;
}

이건 조금 헷갈렸던 것 같다. 포인터를 써줘야 할지 말아야 할지에 대한 여부가 아직 잘 안된다. 부르는 것까지는 잘했지만 len값을 보내주는 것을 잊었다. 그리고 포인터 변수의 주소값이기 때문에 값전달시 &변수 라고 써줘야 하는 것과 또 임의로 *를 이용해서 변수를 생성해서 비교시에는 *변수 <arr[i] 이렇게 써주지만 주소값으로 저장해줄 때에는 &변수라고 되어있는 것을 =으로 받아들인다. 

또한 한번만 참조하기 때문에 maxp가 한번 참조한게 최대값과 같다는 형식으로 나아가야 한다.

 

728x90

'C language > 열혈C 문제풀이' 카테고리의 다른 글

[C] 열혈 C 문제풀이 25  (0) 2021.08.12
[C] 열혈C 문제풀이 24  (0) 2021.08.12
[C] 열혈C 문제풀이 16-1  (0) 2021.08.12
[C] 열혈C 문제풀이 14-1  (0) 2021.08.12
[C] 열혈C 문제풀이 13-1 1번,3번  (0) 2021.08.12

+ Recent posts