3월15일 IF제어문 switch문 문자입출력함수
제어문~
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)으로 버퍼의 내용을 없애줘야한다. ~