Prosto

if문과 for문이 사용된 문제들 -7 -C언어 본문

Programing/C Programing

if문과 for문이 사용된 문제들 -7 -C언어

Prosto 2016. 9. 29. 20:06
if문과 for문에 대한 이해가 부족하면 아래의 글을 먼저 봐주세요.

 

if문(조건문) 이해, 예제 -C언어

 

for문(반복문) 이해, 예제 -C언어



프로그래밍을 하여 프로그램을 만들 때

빠지지 않는, 가장 중요한 if문과 for문에 대하여 제대로 익히기 위해

if문(조건문)과 for문(반복문) 문제(예제)들을 풀어보도록 합시다.

 

 

저번 시간과 마찬가지로 진행됩니다!

이번 시간의 문제는 총 3개입니다.

 각 문제에 대한 출력 결과 예시와 힌트

 그리고 완성된 소스와 그에 대한 설명이 함께 제공될 겁니다.

 

 

자 그럼 시작해볼까요?


 

문제 1.

 두 수를 입력받아 더 큰 수를 출력하는 프로그램을 만드시오. (동일한 경우 동일함 알려줌-출력 예 참고)

 

 (출력 결과 예1 : 15와 8입력)

 

 (출력 결과 예2 : 9와 9입력)

 

 

 

 

 

 

 

 

 

 

 

문제 2.

 알파벳을 입력받아, 대문자이면 소문자로, 소문자이면 대문자로 변환하여 출력하는 프로그램을 만드시오.

 (입력받은 게 알파벳이 아닌 경우 "알파벳이 아닙니다."라고 출력)

 

 (출력 결과 예1 : a입력)

 

 (출력 결과 예2 : E입력)

 

 (출력 결과 예3 : 8입력)

 

 

 

 

 

 

 

 

 

 

 

 

문제 3.

 두 수와 연산자를 입력받아 연산자에 맞는 연산 결과를 알려주는 프로그램을 만드시오.

 

 (출력 결과 예1 : +, 12, 8입력)

 

 (출력 결과 예2 : *, 6, 8입력)

 

 (출력 결과 예3 : /, 9, 3입력)

 

 (출력 결과 예4 : ., 3, 5입력)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

완성 소스와 설명

(소스는 스크린샷입니다. [소스가 화면에 안 들어올 정도로 길다면 따로 올려드리고요.] )

 


 문제 1.

4번 라인에서 입력받을 정수형 변수인 num1, num2를 선언했습니다.

 

10번 라인에서 if문을 통해 입력받은 숫자 num1과 num2 중 num1이 큰지 확인합니다.

11번 라인에서 num1이 더 크다면 그 수와 차이를 알려줍니다.

 

13번 라인에서 10번 라인의 조건이 맞지 않는다면

    else if를 통해 이번에는 num1과 num2 중 num2가 큰지 확인합니다.

14번 라인에서 num2가 더 크다면 그 수와 차이를 알려줍니다.

 

16번 라인에서 else는  10번 라인, 13번 라인 두 조건 모두 만족하지 않을 경우 실행되는 부분입니다.

17번 라인에서 두 수가 얼마로 같다고 printf로 출력해줍니다.

 

 

 

 

 

문제 2.

4번 라인에서 입력받을 문자형 변수인 ch를 선언했습니다.

 

7번 라인에서 if문을 통해 입력받은 문자가 'A' 이상이며 'Z' 이하인지 확인합니다.

    (이를 통해 대문자인지 확인했습니다.)

9번 라인에서 기존의 문자에 32를 더하여 %c로 출력합니다.

    (A의 소문자 'a'와 대문자 'A'의 사이 간격이 32입니다. 그리고 'A'가 더 앞쪽의 코드 번호입니다.)

    (이는 실제로 printf("%c = %d\n", 'A', 'A'); 같은 문구를 실행해보면 확인할 수 있습니다.)

 

12번 라인에서 7번 라인의 if문이 조건에 만족하지 않았다면

  else if를 통하여 소문자인지 확인합니다.(위와 마찬가지로 'a'와 'z' 사이인지 확인)

13번 라인에서 기존의 문자에 32를 빼서 %c로 출력합니다.

 

 

15번 라인에서 else는  7번 라인, 12번 라인 두 조건 모두 만족하지 않을 경우 실행되는 부분입니다.

17번 라인에서 알파벳이 아님을 출력해줍니다. (소문자, 대문자 모두 아니라면 알파벳이 아니죠.)

 

 

 

 

 

문제 3.

4번 라인에서 입력받을 숫자들을 저장할 변수 num1, num2를 선언했습니다.

5번 라인에서 입력받을 연산자를 저장할 문자형 변수인 opr를 선언했습니다.

 

7번 라인에서 연산자를 먼저 입력받았습니다. (scanf_s를 썼기 때문에 scanf보다 항이 하나 더 있죠?(, 1)부분)

13번 라인에서 if문을 통해 입력받은 연산자가 더하기('+')인지 비교합니다.

14번 라인에서 입력받은 문자가 '+'이면 해당 연산결과를 printf로 출력해줍니다.

 

16번 라인에서 13번 라인의 if문 조건이 맞지 않았다면

  else if를 통해 입력받은 연산자가 빼기기('-')인지 비교합니다.

17번 라인에서 입력받은 문자가 '-'이면 해당 연산결과를 printf로 출력해줍니다.

 

19번 라인에서 16번 라인의 else if문 조건이 맞지 않았다면

  다시 else if를 통해 입력받은 연산자가 곱하기('*')인지 비교합니다.

17번 라인에서 입력받은 문자가 '*'이면 해당 연산결과를 printf로 출력해줍니다.

 

22번 라인에서 19번 라인의 else if문 조건이 맞지 않았다면

  다시 else if를 통해 입력받은 연산자가 나누기('/')인지 비교합니다.

17번 라인에서 입력받은 문자가 '/'이면 해당 연산결과를 printf로 출력해줍니다.

 

25번 라인에서 22번 라인의 else if문 조건이 맞지 않았다면

  다시 else if를 통해 입력받은 연산자가 나머지('%')인지 비교합니다.

17번 라인에서 입력받은 문자가 '%'이면 해당 연산결과를 printf로 출력해줍니다.

 

18번 라인에서 else는  13, 16, 19, 22, 25번 라인 모두 만족하지 않을 경우 실행되는 부분입니다.

29번 라인에서 우리가 등록해둔 연산자가 아니니, 잘못된 연산자라고 알려줍니다.

 

 

 

 

 

 

 이번 시간에는 if문과 관계가 있는 문제들을 풀어봤습니다.

 간단한 문제부터 알파벳 전환에 대한 생각을 해보거나,

 if else가 많이 사용되는 문제까지 다양하게 풀어봤습니다.

 (가장 밑의 문제의 if는 switch case문으로 바꿔보는 것도 좋겠네요.)

 

 

if문과 for문이 사용된 문제들 일곱 번째 글이었습니다.

다음 글에서 또 다양한 문제들을 올리도록 하겠습니다.

 

 

궁금한 점 있으시면 댓글이나 따로 메일로 질문하시면 시간되는 대로 답변드리겠습니다. ( 연락 )

Comments