자료실/C언어

C언어 - 조건문 if(), swith()

자료수집중 2020. 6. 15.
반응형

지금까지 출력, 입력, 연산자를 배웠습니다.

이제 좀 더 효율적이게 사용하기 위한 조건문을 알아보겠습니다.

 

조건문은 if와 swith가 있으며

 

if문부터 알아보겠습니다.

if문은 if, else, else if로 작성할 수 있으며

if - else, if - else if, if - else if - if로 작성할 수 있습니다.

if를 사용하는 방법은

if( 조건식 )
{
	코드;
}

if의 조건식이 참이라면 작성된 코드를 실행합니다.

 

else if는 if의 뒤에 나와야 합니다.

if( 조건식 )
{
	코드;
}
else if( 조건식 )
{
	코드;
}

if의 조건에 부합되지 않는(거짓을 출력한)경우 다음 else if의 조건으로 다시 처리합니다. 

 

else는 if뒤에나 else if뒤에 나와야 합니다.

else는 조건을 붙일 수 없습니다.

if( 조건식 )
{
	코드;
}
else if( 조건식 )
{
	코드;
}
else
{
}

if의 조건에 부합되지 않는(거짓을 출력한)경우 다음 else if의 조건으로 다시 처리해도 부합되지 않는 경우의 나머지를 모두 else에서 처리합니다.

나머지를 모두 처리하기 때문에 조건식이 붙지 않습니다.

 

예를 들어 설명하면

만약 국어,영어,수학 3개의 시험 점수를 입력해서 평균성적을 계산해 A, B, C 등급을 표시한다고 했을 때  

조건문 if문을이용하게 되면 성적을 입력해서 자동으로 등급을 나눠줄 수 있습니다.

 

0점 이상~30점이하를 C,30점 초과 70점 이하를 B,70점 초과 100 이하를 A라고 기준을 잡고

만약 평균이 0미만 100 초과를 넘어가면 성적이 잘못 입력됐다는 문자열을 출력해줍니다.

먼저 성적을 입력받고 평균을 내는 코드를 작성합니다.

float a, b, c, avg;
printf("국어 성적 입력 ");
scanf("%f", &a);
printf("영어 성적 입력 ");
scanf("%f", &b);
printf("수학 성적 입력 ");
scanf("%f", &c);
	
avg = (a + b + c) / 3;
printf("평균 성적 : %.1f \n\n", avg);

입력, 출력을 사용해서 작성합니다.

이제 성적에 등급을 매기기 위한 조건문을 작성하겠습니다.

 

if문은 다양하게 작성할 수 있습니다.

 

if만을 사용해서 작성하면

if (0<=avg && avg <= 30)
	printf("성적 등급은 C입니다. \n");
if (30 <avg && avg <= 70)
	printf("성적 등급은 B입니다.\n");
if (70<avg && avg <= 100)
	printf("성적 등급은 A입니다.\n");
if (0 > avg || avg > 100)
	printf("입력 오류입니다.입력된 성적을 확인해주세요.\n");

 

if만을 사용했으므로 모두 조건을 걸어줘야 합니다.

*if ,else if, else는 코드를 한 줄만 작성하면 {}를 생략해도 됩니다.

0점 이상 ~30점이하를 C,30점 초과 70점 이하를 B,70점 초과 100 이하를 A의 조건을 작성하기 위해 

앞에서 연산자에서 알아본 관계, 논리 연산자를 사용해서 조건식을 작성합니다.

 

만약 else if와 else를 사용하여 코드를 작성하면

if (0 > avg || avg > 100)
	printf("입력 오류입니다.입력된 성적을 확인해주세요.\n");
else if (avg >= 70)
	printf("성적 등급은 A입니다.\n");
else if (avg >= 30)
	printf("성적 등급은 B입니다.\n");
else
	printf("성적 등급은 C입니다. \n");

 

조건식이 조금더 간단해지는 모습을 보여주게 됩니다.

그림으로 쉽게 보면

 

 

 

전부 if만을 쓴 코드는 각각 모든 if문에 avg(평균 성적)를 처리합니다.

 

else if와 else를 같이 사용하면

 

 

처음 if에서 거짓으로 나온다면 다음 else if로, 또 거짓이 나오면 다음 else if로 또 거짓이 나오면 결국

else로 모두 처리하기 때문에 조건식이 달라질 수 있습니다.

적절하게 사용해준다면 효율적인 코드를 작성할 수 있습니다.

 

다음으로 

swich문은

swith(변수)
{
    case num1:
    	코드;
        break;
    case num2:
    	코드;
        break;
    case num3:
    	코드;
        break;
        .
        .
        .
    case numN:
        코드;
        break;
    default:
    	코드;
        break;
}

swith문는 if문처럼 조건식이 들어가지 않습니다.

swith(변수)에서 변수에는 정수값이나 문자만 가능합니다.(간단한 정수 수식은 가능 ex)num+1)

case의 num1~numN은 원하는 만큼의 case를 지정할 수 있습니다. 

num1~numN도 정수값이나 문자만 가능합니다.

if문처럼 조건식에 참인지 거짓인지를 체크하는게 아니라 입력된 변수를 위에서부터 차례대로 

case의 값과 비교해서 만약 값이 같다면 case안에 코드가 실행됩니다.

그리고 break;는 해당 case가 실행되면 swith문을 종료시켜줍니다.

break가 없다면 계속 값을 비교하게 됩니다.

default는 if문의 else처럼  case에서 일치하는 값을 찾지 못하고 default에 도달하면 default의

코드가 실행됩니다. default는 else처럼 생략할 수 있습니다.

int num;
printf("정수를 입력해 주세요. ");
scanf("%d", &num);
switch (num)
{
case 1:
	printf("1입력\n");
	break;
case 2:
	printf("2입력\n");
	break;
case 3:
	printf("3입력\n");
	break;
case 4:
	printf("4입력\n");
	break;
default:
	printf("0이하 5이상 입력\n");
	break;
}

만약 1 ~ 4까지의 정수를 입력한다면 case에서 정상적으로 작동하게 됩니다.

하지만 이 외의 정수를 입력하면 default가 작동하게 됩니다.

 

if문과 swith문은 다양한 형태로 사용이 가능하기 때문에

if(조건식)
{
    코드
    if(조건식)
    {
    	코드
    }
}
switch (num)
{
case 1:
    if(조건식)
    {
        코드
    }
	break;
case 2:
    if(조건식)
    {
        코드
    }
	break;
    .
    .
    .
default:
	break;
}

적절한 상황에 잘 선택해서 사용한다면 다양한 코드를 작성할 수 있습니다.

 

 

 

'자료실 > C언어' 카테고리의 다른 글

C언어 - break, continue, return  (0) 2020.06.17
C언어 - 반복문 for(), while()  (0) 2020.06.16
C언어 - 연산자  (0) 2020.06.12
C언어 - scanf()  (0) 2020.06.11
C언어 - printf()  (0) 2020.06.10

댓글