반응형

@ if문

main()

{

    int a=10, b=5;

    if(a>b) printf("a가 b 보다 크다");

}

a값이 b값보다 더 크므로 ( )안의 내용이 참이 됩니다. 그래서 "a가 b보다 크다"라는 문장을 출력합니다.

 

a와 b값을 바꾸어보면?

main()

{

    int a=5, b=10;

    if(a>b) printf("a가 b 보다 크다");

}

B가 a 보다 커지게 되고 ( )안의 내용이 거짓이 되면서 아무것도 출력하지 않게됩니다.

 

scanf() 함수를 이용하여 정수를 하나 입력 받고 그 값이 5보다 큰수인지 판단문을 이용하여 판단하라.

(책에 있는 소스나 이렇게 어딘가에 올라와 있는 소스라도 직접 타이핑 해보시는것이 프로그래밍에 많은 도움이 됩니다.)

단순한 if문은 너무 간단하지요?

이제 조금 더 나아가서 if - else 문을 볼게요

 

@if - else

만약에 조건이 만족하면 if문 뒤에 실행문이 실행되고, 그렇지 않으면 else문의 실행문을 실행하라!

이게 if else 문입니다.

 

scanf() 함수를 이용하여 정수를 하나 입력 받고 그 값이 5보다 큰수인지 판단문을 이용하여 판단하라.

이 문제를 한번더 우려 먹어 보겠습니다..

위에서는 큰수이면 "큰수이다"라고 출력해주지만 작은 수 일때는 그냥 아무것도 출력해주지 않았었습니다.

else 문을 사용하면 조건에 해당하지 않는 경우에 대해서도 처리 할 수 있습니다.

#include <stdio.h>

main()

{

    int a;

    printf("정수를 입력하세요 : ");

    scanf("%d",&a);

    if(a>5) printf("입력 받은 수는 %d 이며, 5보다 큰 수 입니다.", a);

    else printf("입력 받은 수는 %d 이며, 5와 같거나 5보다 작은 수 입니다.",a);

}

 

scanf() 함수를 이용해서 두 수를 입력받아 비교하기

#include <stdio.h>

main()

{

    int a,b;

    printf("정수 두개를 입력하세요 : ");

    scanf("%d %d",&a, &b);

 

    if(a > b) printf("입력 받은 두 수 %d, %d 중 큰수는 %d입니다.",a,b,a);

    else printf("입력 받은 두 수 %d, %d 중 큰수는 %d입니다.",a,b,b);

}

 

 

@ if - else if - else

중간에 elseif하나더 들어갔을 뿐인데 좀 복잡해 보이는군요..하지만 그 만큼 더 많은 일을 해낼 기특한 놈입니다.

누구나 한번씩은 해봤을 성적 등급 매기기를 예로 들어볼게요.

점수를 입력받아서 그 점수가 90점 이상이면 A, 90점 미만 80점 이상이면 B, .....

...,60점 미만이면 F 까지 판단하여 출력하는...아주아주 식상한 문제입니다.

#include <stdio.h>

main()

{

    int a;

    printf("점수를 입력하세요 : ");

    scanf("%d",&a);

 

    if(a>=90) printf("A등급입니다. ");

    else if(a>=80) printf("B등급입니다. ");

    else if(a>=70) printf("C등급입니다. ");

    else if(a>=60) printf("D등급입니다. ");

    else printf("F등급입니다. ");         

}

 

 

 

 

else if를 사용하지 않고 그냥 if문만 사용하면 되지 않나??  라는 의문을 가질 수도 있을 텐데요..

#include <stdio.h>

main()

{

    int a;

    printf("점수를 입력하세요 : ");

    scanf("%d",&a);

 

    if(a>=90) printf("A등급입니다. ");

    if(a>=80) printf("B등급입니다. ");

    if(a>=70) printf("C등급입니다. ");

    if(a>=60) printf("D등급입니다. ");

    else printf("F등급입니다. ");

}

 

 

else if문을 썻을 때와는 완전히 다른 결과이죠;;

만족하는 조건마다 실행문을 다 실행해버려서....원했던것과는 다른 내용들이 출력되버리게 됩니다.

 

@if 문과 { }(중괄호)

조건에 만족할 경우 여러가지 작업을 하려면??

다시 말해 실행문을 여러개 두려면 어떻게 해야할까요?

 

실행문들을 { } (중괄호)로 묶어 주시면 됩니다.

위에 모든 소스들에 if, else if, else 문 뒤에 { } 가 있는 소스는 하나도 없습니다. 실행문이 한문장씩 밖에 없기 때문입니다.

(c언어 에서 한문장은 ; (세미콜론)으로 구분하게 됩니다.)

#include <stdio.h>

main()

{

    int a=5, b=3, temp;

 

    if(a>b) {

        printf("a가 더 큽니다");

        temp = a;

    }

    else {

        printf("b가 더 큽니다.");

        temp = b;

    }

    

    printf("\ntemp = %d ",temp);

}

 

{ } 안에 printf(); 개와 temp =a; 라는 변수에 a값을 담아라 하는 2개의 실행문이 있는 것을 보실 수 있습니다.

 

위 상황에서 { } 를 사용하지 않는다면 어떻게 될까요?

if와 else 사이에 { } 가 없을 때는 한개의 실행문만 존재 하여야 하지만 temp=a; 라는 문장으로 인하여

에러가 발생합니다.

#include <stdio.h>

main()

{

    int a=5, b=3, temp;

 

    if(a>b)

        printf("a가 더 큽니다");

        temp = a;

   else

        printf("b가 더 큽니다.");

        temp = b;

    printf("\ntemp = %d ",temp);

        

}

_

 

@switch

if문으로 해보았던 성적 등급매기기를 한번 더 해볼게요

 

 #include <stdio.h>
main(){
    int a;
 
    printf("점수를 입력하세요 : ");
 
    scanf("%d",&a);
 
 
 switch(a/10){
 case 10:
 case 9:
  printf("A등급입니다. ");
  break;
 case 8:
  printf("B등급입니다. ");
  break;
 case 7:
  printf("C등급입니다. ");
  break;
 case 6:
  printf("D등급입니다. ");
  break;
  
 default:
  printf("F등급입니다. ");
  break;
  
 }
}

 

 

 switch(a/10)이 들어가는 이유는

if문과는 switch문의 조건은 범위가 아닌 정확히 일치하는 값이어야 합니다.

그러다 보니 점수를 10으로 나눈 몫을 스위치문의 조건으로 주기 위해서 나누기 10을 했습니다.

나머지 부분은 어려운 부분은 없는것 같네요.

 

switch에

break;

이 놈은 매우 중요합니다.

이놈을 누락시키면?

 

 

 

반응형

'IT > Programing' 카테고리의 다른 글

c언어 반복문 (for, while)  (0) 2013.10.25
scanf() 함수를 이용하여 값을 입력 받아 보자  (0) 2013.10.16
c언어 형식지정자  (1) 2013.10.13

+ Recent posts