티스토리 뷰

jungol > 문제 > Langauge_Corder > 선택제어문 - 자가진단 5~6


자가진단 5

 

 

  • 문제 조건

조건 1 : 입력 받은 두 수 둘 다 4.0 이상 -> A출력
조건 2 : 입력 받은 두 수 둘 다 3.0 이상 -> B출력
조건 3 : 위의 조건을 만족하지 않을 시 -> C출력


코드


조건 1조건 2에 종속된다!
그러므로

  • 9) if(a >= 3.0 && b >= 3.0) {
  • 10)  if(a >= 4.0 && b >= 4.0) {

조건 2조건 1을 종속시켰다!


조건 3은 나머지(else) (조건 1의 역) 이므로 조건 3)로 적었다.

(조건 1의 역 : 두 실수 중 하나라도 3.0이 아닌)


여기서 조건 2조건 1에 종속시키긴 했으나
B와 A가 동시에 출력되는 오류를 방지하기 위해
goto문을 이용해서 (또는 return으로 바로 A을 출력하자마자 프로그램을 종료해도 된다!)

조건문(if문)을 바로 빠져나왔다!​

goto

goto 는 포탈로 이해하시면 편하다.

모든 걸 다 무시하고 goto가 나오면 바로 연결된 곳으로 이동시킨다.

ex) goto A; (여기에서)

~~~~
~~~~
~~~~
(goto A; 와 A:사이의 모든 내용은 다 지나친다!)

A: (바로 여기로 이동)

return 0;

 

실행결과


조건에 맞게 잘 실행된다!



 

자가진단 6

 



조건 1 : 입력받은 문자가 F 인지 M 인지
조건 2 : 정수가 18 이상인지 아닌지

문자열 입력은 한 칸 띄운뒤 %c을 입력해야 한다!



위의 코드에서는 조건 1을 먼저 쓴 뒤
그다음 조건 2를 종속시켰다!​

'F'는 아스키코드로 (10진법) 70
'M'은 아스키코드로 (10진법) 77
이므로​

  • 11) if(a == 77)
  • 15) else if(a == 70)

조건 1은 이렇게 적을 수 있다!
(물론 굳이 15)에서 else을 할 이유는 없다)

  • 12) if(b >= 18) printf("MAN\n");
  • 13) else printf("BOY\n");

조건 2는 입력값이 18 이상 일 때와 그렇지 않을 경우를
if와 else로 표현했다.

아스키코드

(아스키코드란 미국에서
1960년 경 알파벳 특수문자 등을 7비트 내에서
주고받도록 만든 코드다)

 

결과


여러 번 실행했을 때의 결과다!




코드

자가진단 5

#include <stdio.h>

int main(void)
{
float a = 0, b = 0;
scanf("%f", &a);
  scanf("%f", &b);

  if(a >= 3.0 && b >= 3.0) {
   if(a >= 4.0 && b >= 4.0) {
       printf("A\n");
       goto A;
   }
   printf("B\n");
}
else printf("C\n");

A:
   return 0;
}

자가진단 6
#include <stdio.h>

int main(void)
{
char a = 0;
int b = 0;

scanf(" %c", &a);
scanf("%d", &b);

if(a == 77) {
  if(b >= 18) printf("MAN\n");
  else printf("BOY\n");
}

if(a == 70) {
  if(b >= 18) printf("WOMAN\n");
  else printf("GIRL\n");
}
retrun 0;
}
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함