# 배열과 배열의 크기,공차를 매개변수로 받아서 등차수열로 배열을 채우는 arith_seq 함수를 정의하시오.첫 번째 항의 값은 배열의 0번 원소에 넣어서 전달한다. arith_seq 함수를 이용해서 입력받은 첫 번째 항과 공차로 크기가 10인 정수형 배열에 대하여 등차수열을 구하고 출력하는 프로그램을 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int arith_seq(int*, int, int);
int main(void)
{
int gong, num1;
int arr[10] = { 0 };
int* parr = arr;
printf("첫 번째 항? ");
scanf("%d", &num1);
printf("공차? ");
scanf("%d", &gong);
arr[0] = num1;
arith_seq(&arr, 10, gong);
printf("등차수열: ");
for (int i = 0; i < 10; i++) {
printf(" %3d", arr[i]);
}
}
int arith_seq(int* parr, int size, int com) {
int a = 0;
for (int i = 1; i < size; i++) {
parr[i] = parr[i - 1] + com;
}
return *parr;
}
# 정수형 배열에 대하여 배열의 원소 중 최대값과 최소값을 찾는 get_min_max 함수를 정의하시오.크기가 10인 int 형 배열에 대해서 원하는 값으로 초기값을 채운 다음 get_min_max 함수로 최대값과 최소값을 찾아서 출력하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int get_min_max(int *);
int main(void)
{
int arr[10] = {12,1003,1,5,66,77,0,1002,99,4};
get_min_max(&arr);
}
int get_min_max(int* a) {
int max = 0, min = 0;
//초기 최대값,최소값 설정
if (a[0] > a[1]) {
max = a[0];
min = a[1];
}
else {
max = a[1];
min = a[0];
}
//최대값
for (int i = 2; i < 10; i++) {
if (a[i] > max)
max = a[i];
}
//최소값
for (int i = 2; i < 10; i++) {
if (a[i] < min)
min = a[i];
}
return printf("최대값: %d \n최소값: %d", max, min);
}
# 실수형 배열에 대해서 원소들을 역순으로 만드는 reverse_array 함수를 작성하시오.크기가 10인 double 배열에 대해서 원하는 값으로 초기값을 채운 다음 reverse_array 함수의 호출 결과를 확인하는 프로그램을 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void reverse_array(double*);
int main(void)
{
double arr[10] = { 1.2,3.1,4.3,4.5,6.7,2.3,8.7,9.5,2.3,5.8 };
double* parr = arr;
reverse_array(parr);
}
void reverse_array(double* a) {
printf("배열: ");
for (int i = 0; i < 10; i++) {
printf("%.1f ", a[i]);
}
printf("\n역순: ");
for (int i = 0; i < 10; i++) {
printf("%.1f ", a[9 - i]);
}
}
# 정수형 배열을 특정 값으로 채우는 fill_array 함수를 작성하시오. 단, 포인터와 포인터 역참조 연산자를 이용한다.fill_array함수를 이용해서 크기가 20인 int 배열을 입력받은 값으로 채우고 출력하는 프로그램을 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void fill_array(int*, int);
int main(void)
{
int arr[20] = { 0 };
int* parr = arr;
int num;
printf("배열의 원소에 저장할 값? ");
scanf("%d", &num);
printf("배열: ");
fill_array(parr, num);
for(int i=0;i<20;i++)
printf("%2d", arr[i]);
}
void fill_array(int* a, int n) {
for (int i = 0; i < 20; i++) {
a[i] = n;
}
}
# 열 크기가 5인 2차원 int 배열의 모든 원소를 특정 값으로 채우는 fill_2d_array 함수를 작성하시오. 함수의 매개변수로 배열 전체에 대한 포인터와 배열의 행 크기를 전달한다. 열 크기-5,행 크기-5
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void fill_2d_array(int(*parr)[5], int n);
int main(void)
{
int arr[4][5] = { 0 };
int* parr = arr;
int num;
printf("배열의 원소에 저장할 값? ");
scanf("%d", &num);
fill_2d_array(parr, num);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
printf("%2d", arr[i][j]);
}
printf("\n");
}
}
void fill_2d_array(int(*parr)[5], int n) {
for (int i = 0; i < 4; i++)
for (int j = 0; j < 5; j++)
parr[i][j] = n;
}
# 3*3 행렬의 합을 구하는 add_matrix 함수를 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void add_maxtrix(int(*parrX)[3], int(*parrY)[3]);
int main(void)
{
int arrX[3][3] = { 10,20,30,40,50,60,70,80,90 };
int arrY[3][3] = { 9,8,7,6,5,4,3,2,1 };
int* parrX = arrX;
int* parrY = arrY;
printf("x 행렬:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%5d", arrX[i][j]);
}
printf("\n");
}
printf("y 행렬:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%5d", arrY[i][j]);
}
printf("\n");
}
printf("x+y 행렬:\n");
add_maxtrix(parrX, parrY);
}
void add_maxtrix(int(*parrX)[3],int(*parrY)[3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%5d", parrX[i][j] + parrY[i][j]);
}
printf("\n");
}
}
# 직사각형의 넓이와 둘레를 구하는 get_rect_info 함수를 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void get_rect_info(int*, int*);
int main(void)
{
int height, width;
printf("가로? ");
scanf("%d", &width);
printf("세로? ");
scanf("%d", &height);
get_rect_info(&height, &width);
}
void get_rect_info(int *wid,int *hei) {
printf("넓이:%d 둘레: %d ", *wid * *hei,(*wid+*hei)*2);
}
# 정수형 배열과 키 값을 매개변수로 전달받아 배열에서 키 값을 모두 찾아 인덱스를 배열에 저장해서 리턴하는 find_all_in_array함수를 작성하시오. 이 함수는 찾은 항목의 개수를 리턴한다. 예를 들어 배열에서 12을 2개 찾았으면 2를 리턴하고 찾은 항목의 인덱스는 매개변수인 인덱스 배열에 저장한다. 만일 항목을 찾을 수 없으면 0을 리턴한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int find_all_in_array(int*, int,int);
int main(void)
{
int arr[10] = { 12,45,72,12,45,45,72,12,72,37 };
int findnum;
for (int i = 0; i < 10; i++) //기존 배열 출력
printf("%3d", arr[i]);
printf("\n찾을 값?");
scanf("%d", &findnum);
int result = find_all_in_array(arr, 10, findnum); //리턴값 저장
printf("찾은 항목은 모두 %d개입니다.\n",result);
printf("찾은 항목의 인덱스:");
for (int i = 0; i < result; i++)
printf("%3d", arr[i]);
}
int find_all_in_array(int *arr,int size,int num) {
int count = 0;
int k = 0;
for (int i = 0; i < size; i++) {
if (arr[i] == num) {
count++;
arr[k] = i;
k++;
}
}
return count;
}
# 크기가 같은 2개의 정수형 배열을 매개변수로 전달받아 두 배열의 원소들의 값을 맞바꾸는 swap_array 함수를 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void swap_array(int*, int*);
int main(void)
{
int arr1[10] = { 1,3,5,7,9,11,13,15,17,19 };
int arr2[10] = { 0,2,4,6,8,10,12,14,16,18 };
printf("a: ");
for (int i = 0; i < 10; i++)
printf("%3d", arr1[i]);
printf("\nb: ");
for (int i = 0; i < 10; i++)
printf("%3d", arr2[i]);
swap_array(arr1, arr2);
printf("\n<< swap_array 호출 후 >>\n");
printf("a: ");
for (int i = 0; i < 10; i++)
printf("%3d", arr1[i]);
printf("\nb: ");
for (int i = 0; i < 10; i++)
printf("%3d", arr2[i]);
}
void swap_array(int *arr1,int *arr2) {
int arr[10] = { 0 };
for (int i = 0; i < 10; i++) //기존 arr1 배열값 옮겨놓기
arr[i] = arr1[i];
for (int i = 0; i < 10; i++) {
arr1[i] = arr2[i];
arr2[i] = arr[i];
}
}
'💻 Dev > C' 카테고리의 다른 글
[C]포인터 예제 문제 - 1 (0) | 2020.06.17 |
---|