본문 바로가기
C언어 문제풀이

C언어 - 포인터 관련 연습문제

by 소프트웨어 학부생의 개발 도전기 2023. 7. 13.

1번 문제 : 길이가5인 int형 배열 arr을 선언하고 이를 1,2,3,4,5 로 초기화한 다음, 이 배열의 첫 번째 요소를 가리키는 포인터 변수 ptr을 선언한다. 그 다음 포인터 변수 ptr에 저장된 값을 증가시키는 형태의 연산을 기반으로 배열요소에 접근하면서 모든 배열요소의 값을 2씩 증가시키고, 정상적으로 증가가 이뤄졌는지 확인하는 예제를 작성해보자.

 

 

 

 

 

2번 문제 : 문제1 에서는 포인터 변수 ptr에 저장된 값을 변경시켜가면서 배열요소에 접근하라고 하였다. 그런데 이번에는 포인터 변수 ptr에 저장된 값을 변경시키지 않고, ptr을 대상으로 덧셈연산을 하여, 그 결과로 반환되는 주소 값을 통해서 모든 배열요소에 접근하여 값을 2씩 증가시키는 예제를 작성해보자

 

 

 

 

 

3번 문제 : 길이가 5인 int형 배열 arr을 선언하고 이를 1,2,3,4,5로 초기화한 다음, 이 배열의 마지막 요소를 가리키는 포인터 변수 ptr을 선언한다. 그 다음 포인터 변수 ptr에 저장된 값을 감소시키는 형태의 연산을 기반으로 모든 배열요소에 접근하여, 배열에 저장된 모든 정수를 더하여 그 결과를 출력하는 프로그램을 작성해보자.

 

 

 

 

 

4번 문제 : 길이가6인 int형 배열 arr을 선언하고 이를 1,2,3,4,5,6으로 초기화한 다음, 배열에 저장된 값의 순서가 6,5,4,3,2,1이 되도록 변경하는 예제를 작성해보자. (단, 배열의 앞과 뒤를 가리키는 포인터 변수 두 개를 선언해서 이를 활용하여 저장된 값의 순서를 뒤바꿔야 한다.)

 

 

 

 

 

1번 문제 소스코드▼

더보기
//1번 문제
#include<stdio.h>
#define SIZE 5
int main(void) {
	int arr[SIZE] = { 1,2,3,4,5 };
	int* ptr = &arr[0];

	for (int k = 0; k < SIZE; k++) {
		*ptr += 2;
		printf("%d\n", *ptr);
		ptr++;
	}
	printf("\n");

	/*값이 정상적으로 2씩 증가된 후 저장되었는지 검토*/
	for (int a = 0; a < SIZE; a++) {
		printf("%d\n", arr[a]);
	}

	return 0;
}

2번 문제 소스코드▼

더보기
//2번 문제
#include<stdio.h>
#define SIZE 5
int main(void) {
	int arr[SIZE] = { 1,2,3,4,5 };
	int* ptr = arr;  //int* ptr = &arr[0] 과 같은문장

	for (int s = 0; s < SIZE; s++)
		printf("%d\n", *(ptr + s) + 2);

	/*ptr에 저장된 값이 변경안되었는지 검증*/
	printf("\n");
	for (int a = 0; a < SIZE; a++) 
		printf("%d\n", *(ptr + a));
	
	return 0;
}

3번 문제 소스코드▼

더보기
//4번 문제
#include<stdio.h>
#define SIZE 5
int main(void) {
	int arr[SIZE] = { 1,2,3,4,5 };
	int sum = 0;
	int* ptr = &arr[4];

	for (int a = 0; a < SIZE; a++) {
		sum += *ptr;
		printf("%d\n", *ptr);
		ptr--;
	}
	printf("\n%d\n", sum);

	return 0;
}

4번 문제 소스코드▼

더보기
//4번 문제
#include<stdio.h>
#define SIZE 6
int main(void) {
	int arr[SIZE] = { 1,2,3,4,5,6 };
	int* ptr1 = &arr[5];  //배열의 마지막 요소를 가리키는 포인터 변수
	int* ptr2 = &arr[0];  //배열의 첫번째 요소를 가리키는 포인터 변수
	int* temp;

	for (int k = 0; k < 3; k++) {
		temp = *ptr1;
		*ptr1 = *ptr2;
		*ptr2 = temp;
		ptr1--;
		ptr2++;
	}

	for (int a = 0; a < SIZE; a++) {
		printf("%d\n", arr[a]);
	}

	return 0;
}

(문제 출저 윤성우 열혈C 프로그래밍)

 

 

'C언어 문제풀이' 카테고리의 다른 글

윤성우 열혈C 도전 프로그래밍2  (0) 2023.08.02