C언어 3일차

정혜창·2024년 12월 15일

독학

목록 보기
7/28
post-thumbnail

선택문

프로그램은 연산 결과나 입력값에 따라 처리 방법을 바꿔야 할 때가 많다. 그래서 조건에 따라 실행 문장을 선택할 수 있는 구문이 필요하다. 선택문은 조건문이라고도 한다.

if문

if문의 기본 형식

전제인 조건식과 조건을 만족해야 수행되는 실행문으로 구성
기본 if문은 조건식을 만족하면 실행문을 실행하고, 만족하지 않으면 실행하지 않고 지나간다.

  • if문의 기본형식(예제)
#include <stdio.h>

int main(void)
{
	int a = 20;
    int b = 0;
    
    if(a > 10)
    {	 			// 조건식 a 는 10보다 크므로 참
      	b = a;		// 대입문 실행
    }
    
    printf("a : %d, b : %d\n", a, b);
    
    return 0;
}

조건문이 참이고 실행문이 실행되면서 a : 20, b : 20 로 결과가 나온다.

읽기 쉬운 코드를 위한 규칙

  • 규칙1
    if문은 중괄호{ }를 사용하고 들여쓰기해 실행문을 명확히 구분하는 것이 좋다.
    심지어 중괄호를 쓰지 않고도 실행이 되지만 실행문이 한 문장일 때만 중괄호를 사용하지 않을 수 있다.

  • 규칙2
    실행한 문장이 두 문장 이상이면 반드시 중괄호로 묶어야 한다.

if ~ else문

조건을 만족하지 못할 때 수행되는 실행문을 작성하기 위해 if ~ else문을 쓴다.

  • if ~ else문의 사용(예제)
#include <stdio.h>

int main(void)
{
	int a = 10;
    
    if(a >= 0) {
    
    	a = 1;			// a가 0보다 크거나 같으면 a에 1저장
    
    } else { 
    
    	a = -1;			// a가 0보다 작으면 a에 -1 저장
        
    }
    
    printf("a : %d\n", a);
    
    return 0;
}

결국 두 실행문 중 하나만 실행되며, 반드시 하나는 실행되는 구조를 갖는다.

if ~ else문의 규칙

  • if ~else문의 else에는 조건을 사용하지 않는다.
  • 실행할 문장이 두 문장 이상이면 반드시 중괄호로 묶어야 한다.
  • 경우에 따라 if문을 두 번 사용하는 것보다 if ~ else문을 한 번 사용하는 것이 좋다.

if ~ else if ~ else문

3개 이상의 실행문에서 반드시 하나를 선택하는 경우의 코드를 작성할 땐 if ~ else if ~ else문을 사용한다.

  • if ~ else if ~ else문의 사용(예제)
#include <stdio.h>

int main(void)
{
	int a = 0, b = 0;
    
    if (a > 0){				// if 조건식
    
    	b = 1;				// 실행문 1
    
    } else if (a == 0) {	// else if 조건식
    
    	b = 2;				// 실행문 2
        
    } else {				
    
    	b = 3;				// 실행문 3
        
    }
    
    printf("b : %d\n", b);
    
    return 0;
}

if ~ else if ~ else문의 규칙

  • 각 조건에 따라 실행할 문장이 두 문장 이상이면 반드시 중괄호로 묶어야 한다.
  • 조건식을 차례로 검사하므로 이전 조건의 결과가 반영된다.
    두번째 조건은 첫번째 조건이 거짓인 경우를 포함한다. 마찬가지로 세번째 조건은 첫,두번째 조건이 거짓인 경우 포함.

도전예제

키가 187.5cm 이상이고 몸무게가 80kg 미만이면 ok를 출력하고 그 이외의 경우에는 cancel을 출력하는 프로그램이 완성되도록 하시오(키는 179.5 몸무기는 75.0으로 double형 변수에 초기화합니다.)

나의 시도

#include <stdio.h>

int main(void)
{
	double height = 179.5;
    double weight = 75.0;
    
    if ((height >= 187.5) && (weight < 80.0)) {
    
    	printf("ok\n");
        
    } else {
    
    	printf("cancel\n");
        
    }
    return 0;
}

여기서 발전해서 유저가 직접 입력하고 결과가 자동으로 나오게 하는 프로그램을 작성할 수 없을까 하는 생각을 해보았고, 직접 작성해보았다. 또한 앞에 배운 bmi 수치를 활용해보았다.
bmi 20.0이상, 25미만이면 "표준입니다", 아니면 "체중관리가 필요합니다" (bmi는 체중 / 키의제곱(m))

#include <stdio.h>

int main(void)
{
	double height, weight, bmi;
    
    printf("당신의 키와 체중을 순서대로 입력해주세요 : ");
    scanf_s("%lf %lf", &height, &weight);
    
    height = height / 100.0;
    bmi = weight / (height * height);
    
    if ((bmi >= 20) && (bmi < 25)) {
    
    	printf("표준입니다\n");
        
    } else {
    
    	printf("체중관리가 필요합니다\n");
        
    }
    
    return 0;
}
    
profile
Unreal 1기

0개의 댓글