2007년 01월 16일
훌러덩 배워보는 C : 7장 다중 if문
저번 강의에서 if문의 기본을 배웠는데, 마지막 예제에서 한가지 더 다룬 것이 있다.
#include
main()
{
int a,b,c,d;
scanf("%d", &a);
b = a * a;
c = a + b;
printf(" ");
if(b > 100) /* b > 100 이면 */
{
printf("a의 제곱은 %d 이다. a의 값을 입력하라. ", b);
scanf("%d", &d);
if(d == a) /* d와 a가 같으면 */
printf(" 정답");
else /* d와 a가 다르면 */
printf(" 틀렸다. 정답은 %d 이다.", a);
}
else /* b < 100 이면 */
{
printf("a + b의 값은 %d 이다. b의 값을 입력하라. ", c);
scanf("%d", &d);
if(d == b) /* d와 b가 같으면 */
printf(" 정답");
else /* d와 b가 다르면 */
printf(" 틀렸다. 정답은 %d 이다.", b);
}
return 0;
}
마지막에 나온 예제이다. 여기서 뭐가 추가가 되었는가? 바로 다중if 문이다. 즉 if안에 다시 if가 들어 갈 수 있다는 것이다. 위의 조건은 일단 처음에 b의 값이 100이 넘나 안 넘나에 따라 나뉘게 된다. 그 후 다시 그안에서 if문이 수행이 되어서 일을 하는 것이다.
즉 {} 가로를 이용하는 것에 의해서 단계(Level)이 형성되는 겁니다. 가장 밖에 있는 것 부터 차근차근 안으로 들어가는 거죠. 수학에서 ()가로들이 먼저 하던것과 반대라고 할까?
정리하자면 기본은 같습니다. 단지 어느 if문을 먼저 하느냐 이죠. 같은 형식으로 되니까요.
그럼 위의 예제를 하나하나 보면서 어떻게 진행이 되는지 알아 봅시다.
일단 처음에 정수를 입력 받습니다. 그리고 그 값을 변수 a에 저장을 하지요. scanf("%d", &a);
그리고 각각 b값과 c값이 정해집니다. b = a * a; c = a + b;
b값은 a의 제곱, c 값은 a + b이죠. b값이 바로 위해서 정해 졌기 때문에 사용해도 무방한거죠^^
그다음 if문이 나옵니다. 요약하면 아래와 같죠.
if(b > 100) {}
else {}
즉! b 값이 100보다 크면 그 옆에 있는 {}를 실행하고, 그렇지 않다면 else옆에 있는 {}를 싱행하는 것이지요. 일단 {} 안에 있는 것을 실행한다는 것을 아셔야 합니다.
자 그럼 이번에는 if옆에 있는 {}안 내용을 한번 분석해 보도록 하죠.
printf("a의 제곱은 %d 이다. a의 값을 입력하라. ", b);
scanf("%d", &d);
if(d == a) /* d와 a가 같으면 */
printf(" 정답");
else /* d와 a가 다르면 */
printf(" 틀렸다. 정답은 %d 이다.", a);
일단 문장 하나가 출력되는 것을 볼 수 있겠지요? 하지만 문장이 새줄 출력을 안하네요 --; 그럼 이상하게 나옵니다 허허허~ 넘어가죠 --
그리고 d값을 입력 받는 군요! 그리고 집중! 그 뒤에! if 문이 있습니다! 다시 if 가 작동을 하는 거지요.
d와 a 가 같다면 if(d==a)
정답을 출력하고 printf(" 정답");
d와 a 가 다르다면 else
틀렸다는 매세지와 함께 정답을 출력하죠 printf(" 틀렸다. 정답은 %d 이다.", a);
만약 b값이 100보다 적다면 맨 처음 if 문에서 else가 선택이 되서 그 {}안에 있는 문장들이 실행이 되지요.
잘 아시겠습니까?
요약!
1. if문 뒤에 {}로써 여러개의 명령을 할 수 있다.
2. if문 뒤에 {}안에 또 if문을 씀으로써 다중 if문이 실행가능하다.
3. 다중 if문은 위에서 부터 순차적으로 진행된다.
이상 끝!
숙제 13. if 문 뒤에 {}를 사용하여 여러가지 여러가지 명령을 실행하는 프로그램을 짜 보자.
숙제 14. 다중 if문을 써서 아래 조건에 맞는 학점 계산 프로그램을 짜보도록 하라
점수를 입력 받아서 0점이면 낙제, 100보다 낮다면 90이상 수 80이상 우 70이상 미 60이상 양 나머지 가 라고 출력.
만약 점수가 100점을 넘으면 에러라고 출력. 이 조건을 순차적으로 나타낼 것.
#include
main()
{
int a,b,c,d;
scanf("%d", &a);
b = a * a;
c = a + b;
printf(" ");
if(b > 100) /* b > 100 이면 */
{
printf("a의 제곱은 %d 이다. a의 값을 입력하라. ", b);
scanf("%d", &d);
if(d == a) /* d와 a가 같으면 */
printf(" 정답");
else /* d와 a가 다르면 */
printf(" 틀렸다. 정답은 %d 이다.", a);
}
else /* b < 100 이면 */
{
printf("a + b의 값은 %d 이다. b의 값을 입력하라. ", c);
scanf("%d", &d);
if(d == b) /* d와 b가 같으면 */
printf(" 정답");
else /* d와 b가 다르면 */
printf(" 틀렸다. 정답은 %d 이다.", b);
}
return 0;
}
마지막에 나온 예제이다. 여기서 뭐가 추가가 되었는가? 바로 다중if 문이다. 즉 if안에 다시 if가 들어 갈 수 있다는 것이다. 위의 조건은 일단 처음에 b의 값이 100이 넘나 안 넘나에 따라 나뉘게 된다. 그 후 다시 그안에서 if문이 수행이 되어서 일을 하는 것이다.
즉 {} 가로를 이용하는 것에 의해서 단계(Level)이 형성되는 겁니다. 가장 밖에 있는 것 부터 차근차근 안으로 들어가는 거죠. 수학에서 ()가로들이 먼저 하던것과 반대라고 할까?
정리하자면 기본은 같습니다. 단지 어느 if문을 먼저 하느냐 이죠. 같은 형식으로 되니까요.
그럼 위의 예제를 하나하나 보면서 어떻게 진행이 되는지 알아 봅시다.
일단 처음에 정수를 입력 받습니다. 그리고 그 값을 변수 a에 저장을 하지요. scanf("%d", &a);
그리고 각각 b값과 c값이 정해집니다. b = a * a; c = a + b;
b값은 a의 제곱, c 값은 a + b이죠. b값이 바로 위해서 정해 졌기 때문에 사용해도 무방한거죠^^
그다음 if문이 나옵니다. 요약하면 아래와 같죠.
if(b > 100) {}
else {}
즉! b 값이 100보다 크면 그 옆에 있는 {}를 실행하고, 그렇지 않다면 else옆에 있는 {}를 싱행하는 것이지요. 일단 {} 안에 있는 것을 실행한다는 것을 아셔야 합니다.
자 그럼 이번에는 if옆에 있는 {}안 내용을 한번 분석해 보도록 하죠.
printf("a의 제곱은 %d 이다. a의 값을 입력하라. ", b);
scanf("%d", &d);
if(d == a) /* d와 a가 같으면 */
printf(" 정답");
else /* d와 a가 다르면 */
printf(" 틀렸다. 정답은 %d 이다.", a);
일단 문장 하나가 출력되는 것을 볼 수 있겠지요? 하지만 문장이 새줄 출력을 안하네요 --; 그럼 이상하게 나옵니다 허허허~ 넘어가죠 --
그리고 d값을 입력 받는 군요! 그리고 집중! 그 뒤에! if 문이 있습니다! 다시 if 가 작동을 하는 거지요.
d와 a 가 같다면 if(d==a)
정답을 출력하고 printf(" 정답");
d와 a 가 다르다면 else
틀렸다는 매세지와 함께 정답을 출력하죠 printf(" 틀렸다. 정답은 %d 이다.", a);
만약 b값이 100보다 적다면 맨 처음 if 문에서 else가 선택이 되서 그 {}안에 있는 문장들이 실행이 되지요.
잘 아시겠습니까?
요약!
1. if문 뒤에 {}로써 여러개의 명령을 할 수 있다.
2. if문 뒤에 {}안에 또 if문을 씀으로써 다중 if문이 실행가능하다.
3. 다중 if문은 위에서 부터 순차적으로 진행된다.
이상 끝!
숙제 13. if 문 뒤에 {}를 사용하여 여러가지 여러가지 명령을 실행하는 프로그램을 짜 보자.
숙제 14. 다중 if문을 써서 아래 조건에 맞는 학점 계산 프로그램을 짜보도록 하라
점수를 입력 받아서 0점이면 낙제, 100보다 낮다면 90이상 수 80이상 우 70이상 미 60이상 양 나머지 가 라고 출력.
만약 점수가 100점을 넘으면 에러라고 출력. 이 조건을 순차적으로 나타낼 것.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- 야구게임 by 드득지
- printf() pitfall by lethean
- 포인터 관련 by 풀메탈자켓
- 분광학 숙제 by Yuki37
- if ~ else의 함정 by 써니
# by | 2007/01/16 23:49 | 가르치기 & Information | 트랙백 | 덧글(4)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
훌러덩 배우는 강의에는 안나와 있지만, 재미있는거 하나..
C언어의 if는 0이 아니면 모두 참 입니다.
if(900){블라블라} 가 된다는 거지요. (이게 가끔 편할때가 있어서..;;)
그러고 보니 0아니면 모두 참인걸 안 넣었네요. 나중에 반복문까지 한다면 ture 와 false관련 글을 써야 할 듯하네요.