1. 예제 내용
#define COUNT 10
double arr[COUNT] = { 1.2, 3.1, 4.3, 4.5, 6.7, 2.3, 8.7, 9.5, 2.3, 5.8 };
실수형 배열에 대해서 원소들을 역순으로 초기화하는 reverse_array 함수 생성, 크기가 10인 double 배열을 reverse_array 함수에 적용하여 출력
2. 출력 결과
Before : 1.2 3.1 4.3 4.5 6.7 2.3 8.7 9.5 2.3 5.8
After : 5.8 2.3 9.5 8.7 2.3 6.7 4.5 4.3 3.1 1.2
3. 정답 코드
#include <stdio.h>
#define COUNT 10
double reverse_array(double* arr)
{
int l = 0; // 배열 왼쪽 첫 원소의 위치 저장
int r = COUNT - 1; // 배열 오른쪽 첫 원소의 위치 저장
double temp;
// 바꾸는 횟수는 배열 항목 개수의 절반만큼만 필요
for (int i = 0; i < COUNT / 2; i++)
{
// swap
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
l++; // left index는 1씩 증가
r--; // right index는 1씩 감소
}
return *arr;
}
int main()
{
double arr[COUNT] = { 1.2, 3.1, 4.3, 4.5, 6.7, 2.3, 8.7, 9.5, 2.3, 5.8 };
printf("배열: ");
for (int i = 0; i < COUNT; i++)
printf("%.1lf ", arr[i]);
printf("\n역순: ");
reverse_array(arr); // 배열을 매개변수로 전달
for (int i = 0; i < 10; i++)
printf("%.1lf ", arr[i]);
return 0;
}
참고 자료 : Core C Programming (천정아 저)
'Language > C, C++' 카테고리의 다른 글
[C] rgb 값을 입력 받아 색상 코드 출력 (0) | 2021.09.27 |
---|---|
[C] 배열의 합, 평균, 최댓값, 최솟값 출력 : 배열 알고리즘 (0) | 2021.06.07 |
[C] 두 점 사이의 거리 출력 : 함수 응용 (0) | 2021.06.06 |
[C] Max / Min 출력 : 함수 응용 (0) | 2021.06.06 |
[C] 1에서 100 사이의 3의 배수의 합 : for, while, do while 반복문의 이해 (0) | 2021.06.05 |