본문 바로가기

C 언어/연습문제

C언어 연습문제46

[문제]

구조체를 사용하여 점1은 [1, 2], 점2는 [100, 200]으로 초기화 하라.
그리고 포인터를 사용하여 점1은 2씩 증가시키고 점2는 4씩 증가시키는 프로그램을 작성하라. 

조건1) 포인터를 사용하여 접근하는 방법은 2가지를 사용할 것(ptr[0].xpos 형식은 제외)
조건2) 구조체 배열을 사용할 것
조건3) 구조체 포인터를 사용할 것
조건4) 출력하는 함수를 따로 만들 것

 

[실행결과]

[1, 2] [100, 200]
[3, 4] [104, 204]

 

[코드]

#include<stdio.h>

struct point
{
	int xpos;
	int ypos;
};

void print(struct point* po);

int main(void)
{
	struct point pos[2] = { 
		{1,2},
		{100, 200}
	};
	struct point* ptr = pos;

	print(pos);

	(*ptr).xpos += 2;		// 점1 2씩 증가
	(*ptr).ypos += 2;

	(ptr + 1)->xpos += 4;	//점2 4씩 증가
	(ptr + 1)->ypos += 4;

	print(pos);

	return 0;
}

void print(struct point* po) // 구조체 배열을 출력
{
	int i;

	for (i = 0; i < 2; i++)
		printf("[%d, %d] ", po[i].xpos, po[i].ypos);
	printf("\n");
}

 

<참고>

윤성우의 열혈 C 프로그래밍

'C 언어 > 연습문제' 카테고리의 다른 글

C언어 연습문제45  (0) 2022.04.08
C언어 연습문제44  (0) 2022.04.08
C언어 연습문제43  (0) 2022.04.08
C언어 연습문제42  (0) 2022.04.06
C언어 연습문제41  (0) 2022.04.06