본문 바로가기
연습 문제

[연두] Warming-up C Programming Chapter 6 : 연습 문제 풀이

by 알기 쉬운 코딩 사전 2023. 10. 15.
반응형

연습문제와 소스코드는 제가 직접 풀어 작성한 것이므로 오타, 오답 이 존재할 수 있습니다.

참고 부탁드립니다.

 

Quiz(p.190)

 

1. 프로그램이 시잘될 때 운영체제에 의해서 호출되는 특별한 함수는?

 

[답]

① 진입점 함수

 

2. C 프로그램에서 자주 사용하는 기능을 미리 함수로 준비해둔 것은?

 

[답]

라이브러리 함수

 

3. 함수의 요건 중 생략할 수 있는 것은?

 

[답]

함수의 선언

 

Quiz(p.214)

 

1. 함수를 호출한 곳에서 함수 안으로 전달되는 값을 저장하는 변수는?

 

[답]

② 매개변수

 

2. 다음 중 함수를 정의할 때 해야 하는 일이 아닌 것은?

 

[답]

인자를 지정해서 함수를 호출한다.

 

3. 함수를 호출할 때 실제로 전달되는 값을 무엇이라고 하는가?

 

[답]

 인자

 

4. 함수를 호출할 때 주의사항이 아닌 것은?

 

[답]

⑤ 인자의 개수와 매개변수의 개수가 같아야 한다.

 

5. 함수의 리턴형, 함수 이름, 매개변수에 대한 정보만 미리 알려주는 것을 무엇이라고 하는지 모두 고르시오.

 

[답]

① 함수의 정의

 

Quiz(p.223)

 

1. 지역 변수의 사용 범위는?

 

[답]

 지역 변수가 선언된 블록 안

 

2. 전역 변수를 따로 초기화하지 않았을 때의 값은?

 

[답]

0

 

3. 전역 변수의 소멸 시점은?

 

[답]

③ 더 이상 사용되지 않을 때

 

4. 지역 변수와 전역 변수가 이름이 같을 때 우선적으로 사용되는 것은?

 

[답]

① 지역 변수

 

연습문제(p.224~227)

 

1. 함수의 개념에 대한 설명 중 잘못된 것을 모두 고르시오.

 

[답]

③ 함수를 호출하려면 함수의 내부 코드를 구체적으로 알아야 한다.
④ 함수를 호출할 때마다 함수의 코드가 복사된다.

 

2. 다음 중 함수를 사용할 때의장점을 모두 고르시오.

 

[답]

② 코드의 재사용성이 증가된다.

③ 프로그램을 유지 보수하기 쉽다.

⑤ 기능 위주로 함수를 작성해서 사용하므로 프로그램의 모듈화가 증대된다.

 

3. 함수에 대한 설명 중 잘못된 것을 모두 고르시오.

 

[답]

① 함수의 정의는 생략할 수 없다.

⑤ 함수를 호출할 때는 인자가 매개변수보다 부족하면 0을 대신 전달한다.

 

4. 함수의 리턴형과 매개변수에 대한 설명 중 잘못된 것을 모두 고르시오.

 

[답]

④ 함수의 처리 결과가 둘 이상일 때는 함수의 리턴값 대신 매개변수를 이용해야 한다.

⑦ 함수의 매개변수는 최대 8개만 사용할 수 있다.

 

5. 함수의 요건 세 가지를 모두 쓰시오.

 

[답]

함수의 정의

함수의 호출

함수의 선언

 

6. 리턴값과 매개변수가 있는 함수의 호출에 대한 설명 중 잘못된 것을 모두 고르시오.

 

[답]

② 인자와 매개변수의 데이터형이 다르면 매개변수를 인자의 데이터형으로 형 변환한다.

③ 함수의 리턴값을 사용하지 않으면 함수가 호출되지 않는다.

⑥ 함수의 리턴값이 리턴형과 일치하지 않으면 형 변환한다.

⑧ 인자와 매개변수의 순서는 서로 달라도 상관없다.

 

7. 지역 변수와 전역 변수에 대한 설명 중 잘못된 것을 모두 고르시오.

 

[답]

⑤ if나 while 블록 안에 선언된 변수는 해당 블록을 빠져나온 다음에도 사용할 수 있다.

 

8. 가로와 세로의 길이를 매개변수로 전달받아 직사각형의 둘레를 구하는 함수의 원형을 작성하시오. (단, 가로와 세로의 길이, 직사각형의 둘레는 모두 정수이다.)

 

[답]

int calculateRectangleCircumference(int lengthHorizontal, int lengthVertical) {
    int circumference = 2 * (lengthHorizontal + lengthVertical);
    return circumference;
}

 

9. 문자를 매개변수로 전달받아 영문자인지 검사하는 함수의 원형을 작성하시오.

 

[답]

bool isEnglishCharacter(char ch) {
    if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
        return true;
    } else {
        return false;
    }
}

 

10. 제품의 가격과 할인율을 매개변수로 전달받아 할인 가격을 구하는 함수의 원형을 작성하시오.

 

[답]

int sale(int price, double rate){
    return price * rate / 100;
}

 

11. 정수 2개를 매개변수로 전달받아 두 수의 최대 공약수를 구하는 함수의 원형을 작성하시오.

 

[답]

int gcd(int a, int b) {
    int temp;
    while (b != 0) {
        temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

 

12. 다음 코드에서 박스로 표시된 부분을 함수로 정의하시오. 함수의 리턴형, 함수 이름, 매개변수는 직접 정한다. 그 다음, 정의한 함수를 호출하도록 코드를 수정하시오.

 

[답]

작성 중

 

13. 다음 프로그램에서 ___에 필요한 코드를 작성하시오.

 

[답]

int get_seconds(int hours, int minutes, int seconds);

 

14. 다음 프로그램의 실행 결과를 쓰시오.

 

[답]

data = 10

 

프로그래밍과제(p.228~231)

 

1. 정수와 배수의 개수를 매개변수로 전달받아 정수의 배수를 출력하는 함수를 작성하시오. 이 함수를 이용해서 입력받은 정수의 배수를 20개씩 출력하는 프로그램을 작성하시오. 정수로 0보다 작거나 같은 값이 입력되면 프로그램을 종료한다.

 

[답]

#include <stdio.h>

void function(int num, int number);

int main(void) {
    int num;
    int number = 20;

    while (1) {
        printf("정수? ");
        scanf_s("%d", &num);

        if (num <= 0) {
            break;
        }

        function(num, number);
    }

    return 0;
}

void function(int num, int number) {
    for (int i = 1; i <= number; i++) {
        printf("%d ", num * i);
    }
    printf("\n");
}

 

2. 가로와 세로의 길이를 매개변수로 전달받아 직사각형의 둘레를 구하는 함수를 작성하시오. 이 함수를 이용해서 입력받은 가로, 세로의 길이를 직사각형의 둘레를 구하는 프로그램을 작성하시오.

 

[답]

#include <stdio.h>

int cir(int, int);

int main(void) {
	int w;
	int h;
	printf("가로?");
	scanf_s("%d", &w);
	printf("세로?");
	scanf_s("%d", &h);
	printf("직사각형의 둘레: %d",cir(w, h));
}

int cir(int w, int h) {
	int cir = 2*(w + h);
	return cir;
}

 

 

3. 두 점 x,y 좌표를 매개변수로 전달받아 두 점 사이의 직선 거리를 구하는 함수를 작성하시오. 이 함수를 이용해서 입력받은 시작점부터 끝점 사이의 직선 거리를 구하는 프로그램을 작성하시오.

 

[답]

작성 중

반응형

댓글