- 배열 원소를 가리키는 포인터를 이용하여 정수형 배열의 모든 원소를 츨력하고, 배열 원소의 합을 구하여 출력하는 프로그램을 완성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void printData();
int totalData();
int main(void)
{
int data[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
printf("배열 원소 출력: ");
printData(data);
printf("배열 원소의 합 = %d\n", totalData(data));
}
void printData(int* pi)
{
for (int i = 0; i < 10; i++)
printf("%d ", *(pi + i));
printf("\n");
}
int totalData(int* pi)
{
int sum = 0;
for (int i = 0; i < 10; i++)
sum += *(pi + i);
return sum;
}
👉실행 결과
배열 원소 출력: 1 2 3 4 5 6 7 8 9 10
배열 원소의 합 = 55
- 직사각형의 넓이와 둘레를 구하는 함수를 작성하시오. 이 함수를 이용하여 직사각형의 가로, 세로의 길이를 입력받아 넓이와 둘레를 구하여 출력하는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE
void get_rect_info(int w, int h, int* area, int* circumference);
int main(void)
{
int area, circumference, w, h;
printf("가로길이? ");
scanf("%d", &w);
printf("세로길이? ");
scanf("%d", &h);
get_rect_info(w, h, &area, &circumference);
return 0;
}
void get_rect_info(int w, int h, int* area, int* circumference)
{
*area = w * h;
*circumference = 2 * (w + h);
printf("넓이: %d, 둘레: %d\n", *area, *circumference);
}
👉실행 결과
가로길이? 5
세로길이? 3
넓이: 15, 둘레: 16
- 배열 원소를 가리키는 포인터를 이용하여 정수형 배열의 원소에 입력받은 정수를 더한 다음 출력하는 프로그램을 작성하시오. (배열의 크기는 10)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 10
void print_array(int* p, int size);
void add_array(int* p, int size, int n);
int main(void)
{
int arr[SIZE] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
int num;
print_array(arr, SIZE);
printf("더할 숫자입력: ");
scanf("%d", &num);
add_array(arr, SIZE, num);
return 0;
}
void print_array(int* p, int size)
{
printf("원본 데이터: ");
for (int i = 0; i < SIZE; i++)
printf("%d ", p[i]);
printf("\n");
}
void add_array(int* p, int size, int n)
{
printf("결과: ");
for (int i = 0; i < SIZE; i++)
{
p[i] += n;
printf("%d ", p[i]);
}
printf("\n");
}
👉실행 결과
원본 데이터: 10 20 30 40 50 60 70 80 90 100
더할 숫자입력: 5
결과: 15 25 35 45 55 65 75 85 95 105
- 정수형 배열에 대하여 배열의 원소 중 최대값과 최소값을 구하는 get_min_max 함수를 정의하시오. 이 함수를 이용하여 배열의 최대값과 최소값을 출력한 프로그램을 작성하시오. (배열의 크기는 10)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 10
void print_array(int* p, int size);
void get_min_max(const int* arr, int size, int* min, int* max);
int main(void)
{
int arr[SIZE] = { 55, 12, 45, 98, 23, 35, 28, 67, 52, 40 };
print_array(arr, SIZE);
int* min = &arr[0];
int* max = &arr[0];
get_min_max(arr, SIZE, min, max);
return 0;
}
void print_array(int* p, int size)
{
printf("배열: ");
for (int i = 0; i < SIZE; i++)
printf("%d ", *(p+i));
printf("\n");
}
void get_min_max(const int* arr, int size, int* min, int* max)
{
for (int i = 0; i < SIZE; i++)
if (*max <= *(arr + i))
max = (arr + i);
for (int i = 0; i < SIZE; i++)
if (*min >= *(arr + i))
min = (arr + i);
printf("최대값: %d\n", *max);
printf("최소값: %d\n", *min);
}
👉실행 결과
배열: 55 12 45 98 23 35 28 67 52 40
최대값: 98
최소값: 12
- 크기가 같은 2개의 정수형 배열을 매개변수로 전달받아 두 배열의 원소들의 값을 맞바꾸는 함수를 작성하시오. 이 함수를 이용해서 크기가 5인 두 배열의 값을 맞바꾸는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 5
void print_array(int* p, int size);
void swap_array(int* x, int* y, int size);
int main(void)
{
int a[SIZE] = { 1, 2, 3, 4, 5 };
int b[SIZE] = { 6, 7, 8, 9, 10 };
printf("a 배열 : ");
print_array(a, SIZE);
printf("b 배열 : ");
print_array(b, SIZE);
printf("<< swap_array 호출 후 >>\n");
swap_array(a, b, SIZE);
printf("a 배열 : ");
print_array(a, SIZE);
printf("b 배열 : ");
print_array(b, SIZE);
return 0;
}
void print_array(int* p, int size)
{
for (int i = 0; i < SIZE; i++)
printf("%3d", *(p + i));
printf("\n");
}
void swap_array(int* x, int* y, int size)
{
int temp;
for (int i = 0; i < SIZE; i++)
{
temp = *(x + i);
*(x + i) = *(y + i);
*(y + i) = temp;
}
}
👉실행 결과
배열 : 1 2 3 4 5
b 배열 : 6 7 8 9 10
<< swap_array 호출 후 >>
a 배열 : 6 7 8 9 10
b 배열 : 1 2 3 4 5
- 정수형 배열과 키 값을 매개변수로 전달받아 키 값과 같은 원소를 모두 찾은 다음, 찾은 원소의 인덱스를 배열에 저장해서 리턴하는 함수를 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#define SIZE 10
#include <stdio.h>
void print_array(const int* arr, int size);
int find_array(const int* arr, int size, int key, int* found);
int main()
{
int arr[SIZE] = { 11, 22, 33, 88, 22, 22, 33, 44, 55, 77 };
int found[SIZE];
int input;
print_array(arr, SIZE);
printf("찾을 값? ");
scanf("%d", &input);
int count = find_array(arr, SIZE, input, found);
printf("찾은 항목은 모두 %d개입니다.\n", count);
printf("찾은 항목의 인덱스 :");
print_array(found, count);
return 0;
}
void print_array(const int* arr, int size)
{
for (int i = 0; i < size; i++)
printf("%d ", *(arr + i));
printf("\n");
}
int find_array(const int* arr, int size, int key, int* found)
{
int count = 0;
for (int i = 0; i < SIZE; i++) {
if (*(arr + i) == key)
{
*(found + count) = i;
count++;
}
}
return count;
}
👉실행 결과
11 22 33 88 22 22 33 44 55 77
찾을 값? 22
찾은 항목은 모두 3개입니다.
찾은 항목의 인덱스 :1 4 5