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 |