블로그 이미지
송시혁

calendar

1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

if문 예제p3-5

 

#include<stdio.h>
int main()
{
  int num1;
  int num2; 
  int bigger;

  printf("Please enter two integers: ");
  scanf("%d %d"&num1, &num2);
  bigger = num1;
  if(num1 < num2) 
  {
    bigger = num2;
  }
  printf("The larger number is : %3d\n", bigger);


}

swap = 바꾸는것, 예를 들어 bigger = num1이 였는데 아래에 if문에 조건이 맞아

 bigger = num1이 되는데 이렇게 프로그램내부에서

 값이 변하는 것을 스왑(swap)이라한다.

2줄이상은 반드시 중괄호를 해야한다. 그러나 1줄을 생략가능

if문으로 큰 수 나오게 입력하기

어제 공부했듯이 if문은 참일 때만 실행된다.

if(num1 <num2)에서 num1이 num2보다

 작을 경우 참이 되므로 num2는 bigger에 대입된다.

 그래서 10, 20을 입력했을 때 20이 num2에

저장되므로 출력된다.

20 10으로 입력된경우 넘1이 넘2보다 더 크므로

 if의 조건은 거짓이 된다. 그래서 num1이

그래도 20이라는 값을 가진다.

그래서 아래 프린트문에 출력된다.

프린트문은 if과 관게없는 관계로 무조건 출력된다.












if else문 예제 p3-6


#include <stdio.h>
int main()
{
  int num1;
  int num2;
  int bigger;
  int smaller;
  
  printf("Please enter two integers: ");
  scanf("%d %d"&num1, &num2); 
  if(num1 < num2)
  {
    bigger = num2; 
    smaller = num1;
  }

  else //if의 조건이 맞지 않는경우 아래와 같이 실행.
  {  
    bigger = num1;
    smaller = num2;
  }
  printf("%d is larger than %3d\n", bigger, smaller);

  return 0;
}

 위와 마찬가지로 if문에 조건이 맞으면 그래도 bigger = num2에 정장.

smaller = num1이다. 그러난 조건이 거짓이면,

 else문으로 넘어가 num1이 bigger에 대입되고

 num2가 smaller가 된다.  그리고

printf문으로 출력된다.

주의할 점은 if, if else에서는 들여쓰기가 중요하다.

들여쓰기

만약에 if(조건) { 명령문, 명령문,~~~~

길게 이어쓸수 있지만, 시각적으로 좋지 않기

 때문에 프로그램이 장문인 경우 좋지 않다. 그래서


int main()

{

if(조건)

{

명령문

}

}



이런식으로 {}중괄호를 쓰면, if의 명령문이 어디까지인지

 보기가 좋고 나중에 에러가 떴을 때 쉽게

 수정해나갈 수 있다.


 





p3-7 if와 else if

#include <stdio.h>
int main()
{
  int score;
  char grade = 'X';
  
  printf("Please enter examination score: ");
  scanf("%d"&score); //90을 치면 10을 나눠 9를 만든다.
  if((score <= 100)&&(score >=90)) //9
  {
    grade = 'A';
  }
  else if((score < 90)&&(score >=80))
  {
    grade = 'B';  
  }
  else if((score < 80)&&(score >=70))
  {
    grade = 'C';
  }
  else if((score < 70)&&(score >=60))
  {
    grade = 'D';
  }
  else if((score < 60)&&(score >=0))
  {
    grade = 'F';
  }
  else 
  {
    printf("Wrong score\n");
  }
  printf("The grade is %c\n", grade);

  return 0;
}

위에서 else가 뭐하는지 알았다.

 

그런데 여기에서는 마지막 빼고는 else if를 썻다.

 

그이유는 else는 중첩해서 쓸수 없기 때문이다. 

 

마찬가지로 if문이 조건을 만족시키지 못하면

elseif가 차례대로 실행된다. 예를 들면 90을 입력한다.

 90의 조건에 맞는 첫번째 if문에 참값이 된다.

 그리고 나머지 엘스 이프~~~엘스를 건너뛰어  

출력을 하게 된다. 만약에 68이라면 

 

else if((score < 70)&&(score >=60))문에 만족시킴으로

 

참값이 되고 아래를 건너뛰어 출력이 D로 출력된다.

 

위 프로그램에서 else가 없어도 결과는 같다.

 

하지만,엘스가 없다고 가정하자.
100을 입력하면, 처음 if문이 참값으로 받아들여도

 

아래 if문을 건너뛰지 않고 따지게 된다.

 

즉, 처리속도가 느려서 문제가 발생할 수도 있다.

 

따라서, elseif를 쓴것이다.


if

스위치문(swich).

바꾸다, 변환하다라는 뜻.

case 형식: case 정수(정수중에서 상수) ; 


p3-8

#include <stdio.h>
int main()
{
  int score;
  char grade;
  
  printf("Please enter examination score: ");
  scanf("%d"&score);
  score = score / 10;
  switch (score)
  {
    case 10:
    case 9
      grade = 'A'
      break;
    case 8
      grade = 'B'
      break;
    case 7
      grade = 'C'
      break;
    case 6
      grade = 'D'
      break;
    default
      grade = 'F'
      break;
  }
  printf("The grade is %c\n", grade);
}
break;는 실행을 멈추는 역할 case문이

 실행되면 그것을 정지하여 default값에 보내어진다.

만약에 90이라 입력하면 score에서 연산/을 하여 9가 된다.

 9가 되면, case 9: 의 값이 들어가고 A가 출력된다.

'A'는 아스키코드. 끝에 확장자 %c이기 때문에 그대로 A출력된다.

elseif- 범위지정

swich - 값을 일일이 지정해야한다.

 예를 들어 99를 입력하면 case99:~~~~

 이렇게 적어놓아야 한다.

위의 소스는 score =score /10을 하여 10을 나눔으로서

 일의 자리로 값을 나누게 된다. 99를 9.9로 되고 .9를 날려서

 9의 값을 가지고 case 9:에 실행된다. 

elseif는 범위지정을 하고 프로그램을 짤때

 유리하고 swich(case)문은 값이 명확할때 유용하다.






break문을 주석처리


#include <stdio.h>
int main()
{
  int score;
  char grade;
  
  printf("Please enter examination score: ");
  scanf("%d"&score);
  score = score / 10// 77을 입력하면, 7.7 소수버리고 case7로 간다.
  switch (score) // ()에는 정수변수
  {
    case 10//케이스 정수중에서 상수
    case 9
      grade = 'A'// 들여쓰기
      //break;
    case 8
      grade = 'B'//case:
      //break;
    case 7
      grade = 'C'//        명령;
      //break;
    case 6
      grade = 'D'//  위의 주석문 형태로 케이스 들여쓰기.
      break;
    
    default: grade = 'F'

       //break;
  }
  printf("The grade is %c\n", grade);
}

이경우 어떠한 수를 넣어도 F가 출력한다.

break는 조건을 만족시키면 정지시키고 printf문으로 바로

출력할 수 있게 한다. 그러나, 모두  break를 주석처리

 했기때문에 멈추지 않아 결국 default값으로 저장된다.


p3-9


#include
 <stdio.h>
int main()
{
  char ch;
  printf("Please enter a number between 0 to 9:");
  scanf("%c"&ch);
  switch(ch)
  {
    case'0':
          printf("Input Number is zero.\n");
        break;
    case'1':
          printf("Input Number is one.\n");
        break;
    case'2':
          printf("Input Number is two.\n");
        break;
    case'3':
          printf("Input Number is three.\n");
        break;
    case'4':
          printf("Input Number is Four.\n");
        break;
    case'5':
          printf("Input Number is five.\n");
        break;
    case'6':
          printf("Input Number is six.\n");
           break;
    case'7':
          printf("Input Number is seven.\n");
        break;
    case'8':
          printf("Input Number is Eight.\n");
        break;
    case'9':
          printf("Input Number is Nine.\n");
        break;
    default : printf("wrong number\n");
  }
  return 0;
}


0에서 9범위안에 숫자를 넣으면 해당 프린트문이출력된다.





posted by 송시혁