[C]포인터 예제 문제 - 2

2020. 6. 30. 16:44·🛠 DevOps & Tool/Etc

# 배열과 배열의 크기,공차를 매개변수로 받아서 등차수열로 배열을 채우는 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];
	}
}


[출력화면]

저작자표시 비영리 (새창열림)

'🛠 DevOps & Tool > Etc' 카테고리의 다른 글

[IntelliJ] 인텔리제이에서 Lorem Ipsum(무작위 텍스트) 사용하기  (0) 2020.10.08
[IntelliJ] git pull 시 these untracked files would be overwritten by pull 오류  (0) 2020.10.08
[C]포인터 예제 문제 - 1  (0) 2020.06.17
'🛠 DevOps & Tool/Etc' 카테고리의 다른 글
  • [IntelliJ] 인텔리제이에서 Lorem Ipsum(무작위 텍스트) 사용하기
  • [IntelliJ] git pull 시 these untracked files would be overwritten by pull 오류
  • [C]포인터 예제 문제 - 1
현주먹
현주먹
대구 불주먹 출신 현주먹의 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (167)
      • 👶🏻 CS (15)
        • Operating System (7)
        • DB (5)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • DB&JPA (6)
        • Test Code (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (62)
        • 후기 및 회고 (5)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
        • 📖 가상 면접 사례로 배우는 대규모 시스템 설계 .. (5)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL repository
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    티스토리챌린지
    데브클럽
    C
    로또 미션
    코테스터디
    인프런 특정문자뒤집기
    오블완
    jsp
    에프랩
    F-Lab
    개발자멘토링
    TDD 클린 코드 with Java
    개발자취업
    백준
    NextSTEP
    백준10250
    99클럽
    til
    자바의정석
    에프랩 후기
    PostGreSQL함수
    코딩테스트준비
    오라클
    f-lab 후기
    JPA
    항해99
    인프런 단어뒤집기
    객체지향
    자바의신절판
    ==와 equals()
  • hELLO· Designed By정상우.v4.10.2
현주먹
[C]포인터 예제 문제 - 2
상단으로

티스토리툴바