여기에서는 if 문을 사용한 예제를 풀어보도록 하겠다.
1. 세 개의 float 형 숫자를 사용자에게 입력 받아서 가장 큰 수를 출력하는 프로그램을 작성하라.
|
세 float형 변수를 f1, f2, f3 라고 하고 결과값(중간 수)를 저장하는 변수를 fMax 라고 하 하자. 간단한 알고리듬을 다음과 같이 생각해 볼 수 있다.
(a) f1과 f2 중 큰 것을 fMax에 저장한다.
(b) f3이 fMax보다 크다면 fMax 값을 f3 값으로 갱신한다.
(c) fMax를 화면에 출력한다.
이것을 그대로 프로그램으로 구현하면 다음과 같다.
#include <stdio.h>int main(void){float f1, f2, f3;printf("Input three numbers : ");scanf("%f,%f,%f",&f1, &f2, &f3);float fMax = (f1>f2)? f1:f2; //(a)를 구현if (f3 > fMax) //(b)를 구현fMax = f3;printf("The maximum value is %f.", fMax);//(c)를 구현} |
실행 예는 다음과 같다.
Input three numbers : 11,22.5,-10The maximum value is 22.500000. |
이 프로그램을 조금만 바꾸면 최소값을 구하는 프로그램으로 변경할 수 있다.
2. 세 개의 float 형 숫자를 사용자에게 입력 받아서 가운데 수를 출력하는 프로그램을 작성하라.
|
이 문제는 앞의 문제보다는 한 번 더 생각해야 한다. 여기서도 세 float형 변수를 f1, f2, f3 라고 하고 결과값(중간 수)를 저장하는 변수를 fMid 라고 하고 임시값을 저장하는 변수명을 fTmp라고 하자. (Tmp는 temporary 를 줄인 단어임) 알고리듬은 다음과 같이 생각해 볼 수 있다.
(a) f1과 f2 중 작은 수를 fMid 에 저장하고 큰 수를 fTmp에 저장한다.
(b) f3가 fMid보다 크다면 현재 fMid 값이 최소값이라는 의미다. 따라서 f3와 fTmp중 작은 것이 중간값이므로 그것을 fMid에 저장한다.
(c) f3가 fMid 보다 작다면 (a)에서 구한 fMid 값이 중간값이므로 그것을 출력한다.
(d) fMid를 출력한다.
이제 이 알고리듬을 프로그램으로 작성해 보면 다음과 같다.
#include <stdio.h>int main() {float f1, f2, f3;printf("Input three numbers : ");scanf("%f,%f,%f", &f1, &f2, &f3);float fMid, fTmp;if (f1>f2) { // 알고리듬 (a)를 구현한 것임fMid = f2;fTmp = f1;} else {fMid = f1;fTmp = f2;}if (f3 > fMid) // (b)를 구현한 것임fMid = (f3>fTmp)? fTmp:f3;printf("The middle value is %f.", fMid);} |
위에서 보면 알고리듬 (c)가 성립한다면 두 번째 if 문이 실행되지 않고 바로 printf()문이 실행이 되므로 올바르게 작동하는 것을 이해할 수 있을 것이다.
실행 예는 다음과 같다.
Input three numbers : -11,22.5,100.345The middle value is 22.500000. |
댓글 없음:
댓글 쓰기