프로그래밍/C언어

[쉽게 풀어쓴 C언어 Express 개정4판] 7장 Exercise & Programming

곰탱이들 2024. 2. 11.

7장 Exercise & Programming

7장 Exercise

 

1. a. 값이 0이 아니면 참으로 간주한다

    c. 거짓이여도 1번은 수행한다

    d. 비어있어도 된다

 

2. 1, 3, 4

3. 출력되지 않는다

4. a. 0 3 6 9(세로 출력)

    b. 0 3 6 9(세로 출력)

    c. 0 2 4 6 8(세로 출력)

    d. 10 9 8 7 6 5 4 3 2 1 0(세로출력)

    e. *********

    f. hellohellohellohellohello

 

5.

a

int main() {

	int i = 10;
	while (i >= 0) {
		printf("%d\n", i);
		i--;
	}
}

 

b

int main() {

	int i;
	for (i = 10; i >= 0; i -= 3) {
		printf("%d\n", i);
	}
}

 

6. a. 11

    b. 10

 

7.

a. I값이 변함 없으므로 무한루프

int main() {

	int i = 0;
	while (i < 10) {
		printf("i의 값\n", i);
		i++;
	}
}

 

b. while 줄 맨 끝 ; 제거

int main() {

	int i = 0;
	while (i++ < 10) {
		printf("i의 값\n", i);
	}
}

 

c. --를 ++로 변경

int main() {

	int i;

	for (i = 0; i < 10; i++)
		printf("i = %d\n", i);
}

 

d. x!=1.0은 무한루프 발생, x<1.0으로 수정해야한다

int main() {

	float x;
	for (x = 0.1; x < 1.0; x += 0.1)
		printf("%f\n", x);
}

 

e. i가 초기화되지 않았다

int main() {

	int i;
	for (i = 0; i < 10; i++)
		printf("i=%d\n", i);
}

 

8.

int main() {

	int i;
	for (i = 0; i < 5; i++){
		printf("%d\n", i);
	}
}

 

9.

a

	int i;
	int sum = 0;
	for (i = 1; i <= 30; i++)
		sum += i * i + 1;

b.

	int i, j;
	int sum = 0;
	for (i = 10; i <= 30; i++)
		for (j = 0; j <= 5; j++)
			sum += i * j;

7장 Programming

1.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(){

	int c, i;

	printf("카운터의 초기값을 입력하시오: ");
	scanf("%d", &c);

	for (i = c; i >= 1; i--) {
		printf("%d ", i);
	}
	printf("\n\a");

	return 0;
}

 

2.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int x, sum;
	sum = 0;
	for (x = 1; x <= 100; x++) {
		if (x % 3 == 0)
			sum += x;
	}
	printf("1부터 100 사이의 모든 3의 배수의 합은 %d입니다", sum);

	return 0;
}

 

3.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int num;
    int sum = 0, c = 0;

    while (1) {
        printf("숫자를 입력하시오: ");
        scanf("%d", &num);

        if (num < 0) continue;
        sum += num;
        c++;

        if (c >= 3)
            break;
    }

    printf("\n합계는 %d입니다. \n", sum);

    return 0;
}

 

4.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int a, b;

	printf("정수를 입력하시오: ");
	scanf("%d", &a);

	printf("약수: ");
	for (b = 1; b <= a; b++) {
		if (a % b == 0) {
			printf("%d ", b);
		}
	}
	return 0;
}

 

5.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){

	int n, i;
	double r, result;

	printf("실수의 값을 입력하시오: ");
	scanf("%lf", &r);

	printf("거듭제곱횟수를 입력하시오: ");
	scanf("%d", &n);

	result = 1.0;
	for (i = 0; i < n; i++)
		result *= r;

	printf("결과값은 %f\n", result);

	return 0;
}

 

6.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int n, i, result;
	result = 0;

	printf("n의 값을 입력하시오: ");
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		result += i * i;
	}
	printf("계산값은 %d입니다", result);

	return 0;
}

 

7.

#include <stdio.h>

int main(){

	int y, x;

	for (y = 0; y < 7; y++) {
		for (x = 0; x < (6 - y); x++)
			printf(" ");

		for (x = 6 - y; x < 7; x++)
			printf("*");

		printf("\n");
	}

	return 0;
}

 

8.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int a, i, j;

	printf("정수를 입력하시오: ");
	scanf("%d", &a);
	for (i = 1; i <= a; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d ", j);
		}
		printf("\n");
	}
	return 0;
}

 

9.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int n1, n2, min_m;

    printf("정수 2개를 입력하시오: ");
    scanf("%d %d", &n1, &n2);

    min_m = n1 > n2 ? n1 : n2;
    while (1) {
        if (min_m % n1 == 0 && min_m % n2 == 0)
            break;
        min_m++;
    }
    printf("\n최소 공배수는 %d입니다. \n", min_m);

    return 0;
}

 

10.

#include <stdio.h>

int main() {

    int i, j, prime;

    printf(" ");

    i = 2;

check_prime:
    prime = 1;

    for (j = 2; j < i; j++) {
        if (i % j == 0) {
            prime = 0;
            break;
        }
    }
    if (prime == 1) {
        printf("%d ", i);
    }
    i++;
    if (i <= 100) {
        goto check_prime;
    }

    return 0;
}

 

11.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int f, p_m;

	printf("현재 연료량: ");
	scanf("%d", &f);

	while (1) {
		printf("연료 충전은 +, 소모는 -로 입력해 주세요.: ");
		scanf("%d", &p_m);
		printf("\n");

		f += p_m;
		printf("현재 연료량: %d\n", f);

		if (f <= 10.0)
			printf("(경고) 연료가 20리터 미만입니다.\n");

	}
	return 0;
}

 

12.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int height, i, j;

    while (1) {
        printf("막대의 높이(종료: -1): ");
        scanf("%d", &height);

        if (height < 0) {
            break;
        }
        printf("");
        for (i = 0; i < height; i++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

 

13.

#include <stdio.h>

int main() {

	int i, sum;
	i = 0;
	sum = 0;

	while (1) {
		i++;
		sum += i;
		if (sum >= 10000)
			break;
	}
	printf("1부터 %d까지의 합이 %d입니다.\n", (i - 1), sum - i);

	return 0;
}

 

14.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int a = 0;
    int b = 1;
    int c, n, i;

    printf("몇번째 항까지 출력할까요? ");
    scanf("%d", &n);

    printf("%d, %d, ", a, b);

    for (i = 1; i < n; i++) {
        c = a + b;
        a = b;
        b = c;

        printf("%d, ", c);
    }

    printf("\n");

    return 0;
}

 

15.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int i, n, p, r;

	printf("n의 값: ");
	scanf("%d", &n);

	printf("r의 값: ");
	scanf("%d", &p);

	r = 1;
	for (i = n; i >= (n - p + 1); i--)
		r = r * i;

	printf("순열의 값은 %d입니다.\n", r);

	return 0;
}

 

16.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int n, digit;
    int rev = 0;

    printf("정수를 입력하시오: ");
    scanf("%d", &n);

    do {
        digit = n % 10;
        rev = rev * 10 + digit;
        n /= 10;
    } while (n != 0);

    printf("%d", rev);

    return 0;
}

 

17.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	char cal;
	int x, y;

	while (1) {
		printf("*****************\n");
		printf("A---- Add \n");
		printf("S---- Subtract \n");
		printf("M---- Multiply \n");
		printf("D---- Divide \n");
		printf("Q---- Quit \n");
		printf("*****************\n");

		printf("연산을 선택하시오:");
		scanf(" %c", &cal);
		if (cal == 'Q')
			break;

		printf("두수를 공백으로 분리하여 입력하시오: ");
		scanf("%d %d", &x, &y);

		if (cal == 'A')
			printf("%d \n", x + y);
		else if (cal == 'S')
			printf("%d \n", x - y);
		else if (cal == 'M')
			printf("%d \n", x * y);
		else if (cal == 'D')
			printf("%d \n", x / y);
		else
			printf("지원되지 않는 연산자입니다. \n");
	}
	return 0;
}

 

18.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int n, i;
    double sum = 0;

    printf("항의 개수: ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++) {
        sum += 1.0 / i;
    }

    printf("수열의 합=%f\n", sum);

    return 0;
}

 

19.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {

    srand(time(NULL));
    int niter, in_dots = 0;
    double x, y, z, pi;

    printf("반복 횟수: ");
    scanf("%d", &niter);

    in_dots = 0;

    for (int i = 0; i < niter; i++) {
        x = (double)rand() / RAND_MAX;
        y = (double)rand() / RAND_MAX;
        z = x * x + y * y;
        if (z <= 1) in_dots++;
    }
    pi = (double)in_dots / niter * 4;

    printf("파이 = %lf\n", pi);

    return(0);
}

 

20.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int sticks = 12;
    int user, computer;

    while (sticks > 0) {

        printf("현재 스틱의 개수: %d\n", sticks);
        printf("몇 개의 스틱을 가져가시겠습니까?: ");
        scanf("%d", &user);

        while (user < 1 || user > 3 || user > sticks) {

            printf("\n잘못된 입력입니다. 1~3개의 스틱 중에서 남아있는 수만큼 선택하세요.\n");
            printf("\n몇 개의 스틱을 가져가시겠습니까?: \n");
            scanf("%d", &user);
        }

        sticks -= user;
        if (sticks <= 0) 
            break;

        computer = 4 - user;
        printf("컴퓨터는 %d개의 스틱을 가져갔습니다.\n", computer);
        sticks -= computer;
    }

    printf("게임 종료!\n");

    return 0;
}

 

21.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {

    int g, max, min;
    int a;

    srand(time(NULL));
    max = 100;
    min = 1;

    printf("컴퓨터가 당신이 생각하는 숫자를 알아맞히는 게임입니다.\n");
    printf("하나의 숫자를 생각하세요. \n컴퓨터가 제시한 숫자보다 정답이 높으면 1, 낮으면 - 1라고 하세요.\n");
    printf("컴퓨터가 숫자를 맞추면 0라고 하세요.\n\n");

    do {
        g = (max + min) / 2;

        printf("숫자가 %d인가요? ", g);
        scanf("%d", &a);

        if (a == -1) {
            max = g - 1;
        }
        else if (a == 1) {
            min = g + 1;
        }
    } while (a != 0);

    return 0;
}

8장 Exercise & Programming은 아래 클릭하시면 됩니다.

[C언어] 쉽게 풀어쓴 C언어 Express 8장 Exercise & Programming

 

[C언어] 쉽게 풀어쓴 C언어 Express 8장 Exercise & Programming

8장 Exercise & Programming 8장 Exercise 1. 1번 2. 3번: y = sin(x) + sqrt(x * x * -2 * a) + ldexp(1.0 * 10; 3. 1번, 4번 4. 1번 5. a. 1.72(double) b. 1(double) c. 2(double) 6. a. 0-9 b. 2-6 7. a. y = log10(x) + exp(x) b. y = sin(x) + sqrt(x * x * -2 *

gomszone.tistory.com

댓글