C언어/참고서: C언어 콘서트

C언어 49차시 포인터 연습문제2

Olivia-BlackCherry 2023. 4. 7. 12:11

1. 포인터 이용해서 2차 방정식의 근을 구하기

매개 변수로 포인터를 사용한다. 두 개의 근을 포인터를 이용해서 반환하도록 한다.

♣결과

-1.000000, -3.000000

♧코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int quardratic(double *xplus, double *xminus)
{
	double a, b, c, d;
	printf("이차 방정식의 근을 구하는 문제입니다..\na, b, C 세 계수를 입력해주세요\n");
	scanf("%lf%lf%lf", &a, &b, &c);  

	d = b * b - 4.0 * a * c;
	*xplus = (-b + sqrt(d)) / (2.0 * a);
	*xminus = (-b - sqrt(d)) / (2.0 * a);
	printf("근의 값은 %lf, %lf입니다.\n\n", *xplus, *xminus);
	
	return 0;
}

int main()
{
	double xplus, xminus;
	quardratic(&xplus, &xminus);
	printf("근의 값은 %lf, %lf입니다.\n\n", xplus, xminus);

	return 0;
}

//olivia_codingschool

 

 

2.  포인터 이용해서 정수부, 소수부 나누기

♣결과

2, 0.400

2, 0.400

♧코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int get(double value, int *ipart, double *fpart)
{
	*ipart = value / 1;
	*fpart = value - *ipart;
	printf("%d, %.3lf\n\n", *ipart, *fpart);
	return 0;
}

int main()
{
	int ipart;
	double fpart;
	get(2.4, &ipart, &fpart);
	printf("%d, %.3lf", ipart, fpart);

	return 0;
}

 

 

3. 포인터 이용하여 배열 값 +1 바꾸기

- 픽셀 pixel: 디지털 영상은 미세한 픽셀로 이루어져 있다. 픽셀의 밝기는 숫자로 표현된다.

-이미지가 3*3 사이즈라고 하면 9개의 픽셀이 있고, 각 픽셀은 각각 밝기가 숫자로 표시되어 있다.

- 각 픽셀의 밝기는 0-3까지 조정 가능하다고 가정한다.

- 각 픽셀의 밝기를 1씩 줄이는 프로그램을 작성하자.

♣결과

0,0,1,1,2,1,1,2,2

>>1 1 2 2 3 2 2 3 3

♧코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int darker_image(char *p)
{
	for (int i = 0; i < 9; i++) {
		*(p + i) += 1;
		printf("%d ", *(p + i));
	}
	return 0;
}

int main(void)
{
	char image[9] = { 0,0,1,1,2,1,1,2,2 };
	darker_image(&image);
	return 0;
}
//olivia_codingschool

 

 

4. 정처기 문제- 출력값구하기 

♧코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int NUM = 98;
	int* ptr;
	ptr = &NUM;
	NUM += 1;
	printf("%d ", NUM);
	*ptr = *ptr + 1;
	printf("%d ", *ptr);
	return 0;
}

//olivia_codingschool

♣결과

99 100 

 

 

5. 옳은 것을 고르시오

1. 포인터 변수는 기억장소의 번지를 기억하는 동적변수이다.

2. 포인터는 가리키는 자료형이 일치할 때 대입한다.

3. 실행문에서 간접 연산자 *를 사용하여, 포인터 변수가 지시하고 있는 내용을 참조한다.

4. 보통 변수의 번지를 참조하려면 번지 연산자 #를 쓴다.

 

♣정답

1,2,3