int main(void)
{
int s;
char g;
printf("정수를 입력하세요 : ");
scanf("%d", &s);
switch( s / 10)
{
case 10 :
case 9 :
g = 'A' ;
break;
case 8 :
g = 'B' ;
break;
case 7 :
g = 'C' ;
break;
case 6 :
g = 'D' ;
break;
case 5 :
g = 'F' ;
break;
case 4 :
g = 'F' ;
break;
case 3 :
g = 'F' ;
break;
case 2 :
g = 'F' ;
break;
case 1 :
g = 'F' ;
break;
case 0 :
g = 'F' ;
break;
default :
printf("잘못 입력하셨습니다.\n");
break;
}
printf("%c 학점입니다.\n", g);
return 0;
}
연습문제를 푸는중인데 if else를 switch로 바꾸라그래서 변환하면서 잘모르겠는데..
현재 문제가 뭐냐면 0 ~ 100 을 제외하고는 잘못입력하셨습니다. 가 나와야하고
60점 이하는 F를 만들어줘야하는데
저런식으로밖에 못하겠습니다 거기다 -2를 입력하면 F학점이나옵니다...
아 ㅠㅠ 모르겠네요 이건...
int main(void)
{
unsigned int s; // - 입력 없으므로 unsigned
char g = NULL; // 초기화 후 해당 case가 있을때만 값 대입.
printf("정수를 입력하세요 : ");
scanf("%d", &s);
if(s > 100) s = 100; // 101~109 도 10으로 나누면 10이므로 A가 나옴.
switch( int(s / 10))
{
case 10 :
case 9 :
g = 'A' ;
break;
case 8 :
g = 'B' ;
break;
case 7 :
g = 'C' ;
break;
case 6 :
g = 'D' ;
break;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 :
g = 'F' ;
break;
// break;가 없으면 아래조건의 행까지 모두 수행함. 실행문이 같다면 몰아서 씀.
default :
printf("잘못 입력하셨습니다.\n");
break;
}
if(g!=NULL) printf("%c 학점입니다.\n", g);
// 범위 밖의 수가 입력되면 g는 NULL 초기화 그대로이므로 출력되지 않음.
return 0;
}