옥수수와 식빵 그리고 코딩

6장 실전예제 본문

C/2021겨울계절 - 프로그래밍 이해

6장 실전예제

옥식 2021. 12. 28. 12:38

p.7 현재 온도에 따른 폭염 주의 발령

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double temperature;

    printf("현재온도 입력: ");
    scanf("%lf", &temperature);

    if (temperature >= 30.0) {

        printf("폭염 주의보를 발령합니다.\n");
        printf("건강에 유의하세요.\n");

    }
    printf("현재온도는 섭씨 %.2f 입니다.\n", temperature);

    return 0;
}

 

p.9 조건 if else로 짝수와 홀수 판정

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int n;
    printf("정수 입력: ");
    scanf("%d", &n);

    if (n % 2) {

        printf("홀수\n");
    }
    else {
        printf("짝수\n");
    }

    (n % 2) ? printf("홀수\n") : printf("짝수\n");

    return 0;
}

 

p.11 조건 if else문으로 평균평점에 따른 적정 구문 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double gpa;

    printf("평균평점 입력: ");
    scanf("%lf", &gpa);

    if (gpa >= 4.3) {
        printf("최우등\n");
    }
    else if (gpa >= 3.8) {
        printf("우등\n");
    }
    else if (gpa >= 3.0) {
        printf("우수\n");
    }
    else
        printf("3.0미만\n");

    return 0;
}

 

p.12

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int type, point;

    printf("번호를 선택: 1, 2: ");
    scanf("%d", &type);
    printf("필기시험 점수 입력: ");
    scanf("%d", &point);

    if (type == 1) {
        if (point >= 70)
            printf("1종면허 합격\n");
        else
            printf("1종면허 불합격\n");
    }
    else if (type == 2) {
        if (point >= 60)
            printf("2종 면허 합격\n");
        else
            printf("2종 면허 불합격\n");
    }

    return 0;
}

 

p.13 else와 if를 조합하여 나이에 따른 선택

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int age = 0;

    printf("당신의 나이는: ");
    scanf("%d", &age);

    if (age >= 20) {
        if (age >= 65)
            printf("단신은 어르신\n");
        else
            printf("당신은 성인\n");
    }
    else {
        printf("당신은 미성년자\n");
    }
    return 0;
}

 

p. 입력받은 세 정수의 최댓값 출력(if else)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int x, y, z;
    printf("세 정수를 입력: ");
    scanf("%d %d %d", &x, &y, &z);

    if (x > y) {
        if (x > z)
            printf("최대 수: %d\n", x);
        else
            printf("최대 수: %d\n", z);
    }
    else
    {
        if (y > z)
            printf("최대 수 : %d\n", y);
        else
            printf("최대 수 : %d\n", z);
    }
    return 0;
}

 

p. 17 switch로 두 실수의 사칙연산

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double x, y;
    int op;

    printf("두 실수 입력: ");
    scanf("%lf %lf", &x, &y);
    printf("연산종류 번호 선택 1(+), 2(-), 3(*), 4(/): ");
    scanf("%d", &op);

    switch (op) {
    case 1:
        printf("%.2f + %.2f = %.2f\n", x, y, x + y);
        break;
    case 2:
        printf("%.2f - %.2f = %.2f\n", x, y, x - y);
        break;
    case 3:
        printf("%.2f * %.2f = %.2f\n", x, y, x * y);
        break;
    case 4:
        printf("%.2f / %.2f = %.2f\n", x, y, x / y);
        break;

    default:
        printf("번호를 잘못 선택했습니다.\n");
        break;
    }
    return 0;
}

op반환형을 char로 바꿔서 case(value)의 value값도 '+'처럼 바꾸어 실행해보기

실행 돼야 하는데 실행안됨.. 다시 해보기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double x, y;
    char op;

    printf("두 실수 입력: ");
    scanf("%lf %lf", &x, &y);
    printf("연산종류 선택 +, -, *, /: ");
    scanf("%c", &op);

    switch (op) {
    case '+':
        printf("%.2f + %.2f = %.2f\n", x, y, x + y);
        break;
    case '-':
        printf("%.2f - %.2f = %.2f\n", x, y, x - y);
        break;
    case '*':
        printf("%.2f * %.2f = %.2f\n", x, y, x * y);
        break;
    case '/':
        printf("%.2f / %.2f = %.2f\n", x, y, x / y);
        break;

    default:
        printf("번호를 잘못 선택했습니다.\n");
        break;
    }
    return 0;
}
첫번째 scanf할때 엔터를 치는데 그 엔터가 두번째 scanf에서 인식을 해버린다. 
그 엔터가 두번째 scanf에서 인식을 해버린다. 
그래서 다음에 바로 scanf할때 %c로 문자를 입력받아야 하는데 개행 문자를 받아버려서 +-*/를 입력 못하는 것.
scanf 두개 사이에 getchar();를 넣어서 입력버퍼 안에 \n을 빼주면 됨.

라고 튜터님이 알려주심!

 

수정 결과 - 잘 됨

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double x, y;
    char op;

    printf("두 실수 입력: ");
    scanf("%lf %lf", &x, &y);
    getchar(); //입력 버퍼 안의 \n을 빼 줌
    printf("연산종류 선택 +, -, *, /: ");
    scanf("%c", &op);

    switch (op) {
    case '+':
        printf("%.2f + %.2f = %.2f\n", x, y, x + y);
        break;
    case '-':
        printf("%.2f - %.2f = %.2f\n", x, y, x - y);
        break;
    case '*':
        printf("%.2f * %.2f = %.2f\n", x, y, x * y);
        break;
    case '/':
        printf("%.2f / %.2f = %.2f\n", x, y, x / y);
        break;

    default:
        printf("번호를 잘못 선택했습니다.\n");
        break;
    }
    return 0;
}

 

p.18 월에 따른 사계절 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int month;
    printf("월을 입력: ");
    scanf("%d", &month);

    switch (month) {
    case 4: case 5:
        printf("%d월은 봄입니다.\n", month);
        break;
    case 6: case 7: case 8:
        printf("%d월은 여름입니다.\n", month);
        break;
    case 9: case 10: case 11:
        printf("%d월은 가을입니다.\n", month);
        break;
    case 12: case 1: case 2: case 3:
        printf("%d월은 겨울입니다.\n", month);
        break;

    default:
        printf("월을 잘못 입력했씁니다.\n");
    }
    return 0;
}

p.19

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int score;

    printf("점수 입력: ");
    scanf("%d", &score);

    switch (score / 10) {
    case 10: case 9:
        printf("점수가 %d 점으로 성적이 %c 입니다.\n", score, 'A');
        break;
    case 8:
        printf("점수가 %d 점으로 성적이 %c 입니다.\n", score, 'B');
        break;
    case 7:
        printf("점수가 %d 점으로 성적이 %c 입니다.\n", score, 'C');
        break;
    case 6:
        printf("점수가 %d 점으로 성적이 %c 입니다.\n", score, 'D');
        break;

    default:
        printf("점수가 %d 점으로 성적이 %c 입니다.\n", score, 'F');

    }
    return 0;
}

 

p.21 너비를 입력받아 switch문으로 삼각형 사각형 넓이 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    enum shape {TRIANGLE = 1, RECTANGLE};
    int input;
    double width, height;

    printf("삼각형[1], 사각형[2] 중의 번호 하나 선택: ");
    scanf("%d", &input);
    printf("너비와 높이를 입력: ");
    scanf("%lf %lf", &width, &height);
    printf("가로: %.2lf, 세로: %.2lf \n", width, height);

    switch (input) {
    case 1:
        printf("삼각형 면적: %.2lf\n", width * height / 2);
        break;
    case RECTANGLE:
        printf("사각형 면적: %.2lf\n", width* height);
        break;

    default:
        printf("잘못된 입력 \n");
    }
    return 0;
}

 

p.

 

 

 

p.

 

 

p.

 

 

p.

 

 

 

 

'C > 2021겨울계절 - 프로그래밍 이해' 카테고리의 다른 글

if else를 이용한 연봉 계산  (0) 2021.12.29
7장 실습예제  (0) 2021.12.29
5장 실습예제  (0) 2021.12.27
4장 실습예제  (0) 2021.12.27
3장 실습예제  (0) 2021.12.24
Comments