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