본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 7.11 최대, 최소, 평균 구하기 예제 ~ 7.13 goto를 피하는 방법

728x90

7.11 최대, 최소, 평균 구하기 예제

  • 입력받은 수들의 최댓값, 최솟값, 평균값을 구하는 프로그램 
  • 0 미만, 100 초과인 입력값들은 무시

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <float.h>                      // FLT_MAX 사용 위해 include

int main() {

    float max = -FLT_MAX;
    float min = FLT_MAX;
    float sum = 0.0f;
    float input;
    int count = 0;

    while (scanf("%f", &input) == 1) {

        if (input > 100.0f || input < 0.0f)			
            continue;

        max = (input > max) ? input : max;      
        min = (input < min) ? input : min;

        sum += input;
        count++;
    }

    if (count > 0)
        printf("Max = %f, Min = %f, Average = %f", max, min, sum / count);
    else
        printf("No input\n");
    
    return 0;
}
  • 실수로 표현할 수 있는 가장 작은 값 (-FLT_MAX == 3.402823466e+38F)을 max에 넣어서 input의 첫 값은 무조건 max보다 큼
  • min에는 실수로 표현할 수 있는 가장 큰 값을 넣음
Output : 
(1 2 3 4 5 q 입력)
Max = 5.000000, Min = 1.000000, Average = 3.000000

 

 

7.12 다중 선택 switch와 break

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {

    char c;
    while ((c = getchar()) != '.') {
        printf("You love ");

        switch (c) {        // 괄호 안에는 정수형 변수만 가능
        case 'a': 
            printf("apple");
            break;
        case 'b':           // 위처럼 두가지 이상 조건 입력 가능
        case 'B':
            printf("baseball");
            break;
        case 'c':
            printf("cake");
            break;
        default:            // 위의 모든 case에 해당하지 않을 때
            printf("nothing");
        }
        printf(".\n");

        while (getchar() != '\n');      // 입력버퍼 역할, 줄바꿈이 나올때 까지 다른 문자들 무시
        continue;
    }

    return 0;
}

 

Output : 
(a 입력)
You love apple.
(b 입력)
You love baseball.
(B 입력)
You love baseball.
(c 입력)
You love cake.
(d 입력)
You love nothing.

 

 

 

7.13 goto를 피하는 방법

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {

    int size, cost;

    scanf("%d", &size);

    if (size < 10)
        goto a;     // a 는 label, 해당 label이 있는 위치로 이동
    goto b;
   
a:cost = 50 * size;
b:cost = 100 * size;

    printf("Cost : %d", cost);

    return 0;
}

 

Output : 
(11 입력)
Cost : 1100
(4 입력)
Cost : 400
  • goto문은 과거 BASIC과 같은 조건문과 반복문이 발달되지 않은 언어에서 사용
    • BASIC (Beginner's All-purpose Symbolic Instruction Code) : '초심자용 다목적 기호명령부호'로 교육용으로 개발된 절차지향 언어
  • 현재는 오류의 위험이 있고 코드의 가독성이 떨어지므로 되도록 사용하지 않음

 

 

 

 


https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., - 강의 소개 | 인프런...

www.inflearn.com