2010년/3월

3월15일 IF제어문 switch문 문자입출력함수

뽀얀햄스터 2010. 3. 15. 16:33


제어문~

IF문

#include<stdio.h>
int main()
{
 int iscore;
 printf("점수를 입력하시오\n");
 scanf("%d",&iscore);
 if((95<=iscore) && (100>=iscore))
 {
  printf("A+학점입니다.\n");
 }
 /*else*/ if((90<=iscore) && (95>iscore))
 {
  printf("A학점입니다.\n");
 }
 /*else*/ if((85<=iscore) && (90>iscore))
 {
  printf("B+학점입니다.\n");
 }
 /*else*/ if((80<=iscore) && (85>iscore))
 {
  printf("B학점입니다.\n");
 }
 /*else*/ if((75<=iscore) && (80>iscore))
 {
  printf("C+학점입니다.\n");
 }
 /*else*/ if((70<=iscore) && (75>iscore))
 {
  printf("C학점입니다.\n");
 }
 /*else*/ if((69>=iscore) && (0<=iscore))
 {
  printf("F학점입니다.\n");
 }
/* else
 {
  printf("잘못입력하셨습니다.\n");
 }
*/
 return 0;
}


최적화라는말이 있다. 즉  C프로그래밍에서  if만 사용할경우

만약 100이라는 점수를 넣었을때 100이라는 값이 나왔지만 밑에 조건문을 다거치게 된다.

하지만 if 와 else를 사용할경우 100을 넣어서 조건이 확립되면 그후에 나오는 else if는 다생략하고

프로그램을 종료하기에 프로그램측면에서 if와 else를 같이 쓰는것이 헐씬 낫다.

#include<stdio.h>
int main()
{
 int iscore;
 printf("점수를 입력하시오\n");
 scanf("%d",&iscore);
 if(100<iscore)
 {
  printf("점수입력을 잘못하셨습니다.\n");
 }
 else if(95<=iscore)
 {
  printf("A+학점입니다.\n");
 }
 else if(90<=iscore)
 {
  printf("A학점입니다.\n");
 }
 else if(85<=iscore)
 {
  printf("B+학점입니다.\n");
 }
 else if(80<=iscore)
 {
  printf("B학점입니다.\n");
 }
 else if(75<=iscore)
 {
  printf("C+학점입니다.\n");
 }
 else if(70<=iscore)
 {
  printf("C학점입니다.\n");
 }
 else if((69>=iscore) && (0<=iscore))
 {
  printf("F학점입니다.\n");
 }
 

 return 0;
}
IF문에 조건이 하나와 두개 일때의 차이점이 있다. 결론은 IF문에서 조건은 역시 하나일때 속도면에서
프로그래밍 측면에 낫다.



중요한점!!!
조건문에서 왜 상수를 왼쪽에 쓰고 오른쪽에 변수를 사용하는 것은 나중에 3만줄이 이상이 늘어갈경우
오타로 인해  컴파일 에러가 뜨지만 왼쪽에 변수를 넣고 오른쪽에 상수를  넣으면  대입이 될수도 있어서 컴파일에서 못찾아나는경우 있다.
ex)
 1. if(100=iscore)
 2. if(iscore=100)
경우 1번 경우는 100과 iscore가 같다는 '=='이 붙어야하는 오타이다 저경우  컴파일 에러가 뜨지만
2번의 경우느 iscore에 100이 대입되는것이 기기때문에 '=='을 안붙경우 컴파일 잘실행되고 어디서 잘못된지 찾아야한다~~


SWITCH

switch(iscore) <=== iscore는 상수중 정수(int) 문자(char)만 가능 실수는 불가능
{
      case 100:
      printf();
      break;
     
      default:
      printf();
      break;

}

default경우는  if의 else와  비슷하다. 그리고 생략이 가능하며 오류나 예외 일경우 메시지를 출력하는데 사용하면 편리하다.



문자 입출력 함수
getchar(),putchar()
<엔터키>누를때마다 입력 된다.
버퍼를 사용

getche(),getch(),putch()
버퍼를 사용하지않고   바로 입력 되는 것이다.

fflush(stdin); 표준입력인걸을 쓰레기값을 버린다...
f : file
flush:변기의 물을 내리다
std: standard
in :input

ex)에서 A하고  엔터를  눌리게 되면 엔터가 버퍼에  저장되어있기에~
fflush(stdin)으로 버퍼의 내용을 없애줘야한다. ~