100제 [기초 - 조건/선택실행구조] 1065~1070

  1. 세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.
#include <stdio.h>
int main()
{
    unsigned int x,y,z;
    scanf("%d %d %d",&x,&y,&z);
    if(x%2==0)
    printf("%d\n",x);
    if(y%2==0)
    printf("%d\n",y);
    if(z%2==0)
    printf("%d\n",z);
    return 0;
}

세정수에 대해서 하나하나씩 조건문을 걸어줌

  1. 세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.
#include <stdio.h>
int main()
{
    int x,y,z;
    scanf("%d %d %d",&x,&y,&z);
    if(x%2==0)
    printf("even\n");
    else
    printf("odd\n");
     if(y%2==0)
    printf("even\n");
    else
    printf("odd\n");
     if(z%2==0)
    printf("even\n");
    else
    printf("odd\n");
    return 0;
}

전 문제에서 else를 붙여서 홀수일떄 odd를 출력을 더했다.

  1. 정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.
#include <stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x<0)
    printf("minus\n");
    else
    printf("plus\n");
    if(x%2==0)
    printf("even");
    else
    printf("odd");
    return 0;
}
  1. 점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
    평가 기준
    점수 범위 : 평가
    90 ~ 100 : A
    70 ~ 89 : B
    40 ~ 69 : C
    0 ~ 39 : D
    로 평가되어야 한다.
#include <stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x>=90 && x<=100)
    printf("A");
    else if(x<90 && x>=70)
    printf("B");
    else if(x<70 && x>=40)
    printf("C");
    else
    printf("D");
    return 0;
}

학교에서 조건문배우면 꼭 이문제를 푼다. swtich case로도 풀수있다.
점수범위와 &&를 유의해서 조건문을 씌운다

  1. 평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.
    평가 내용
    평가 : 내용
    A : best!!!
    B : good!!
    C : run!
    D : slowly~
    나머지 문자들 : what?
#include <stdio.h>
int main()
{
    char c;
    scanf("%c",&c);
    switch(c)
    {
        case 'A' :
        printf("best!!!");
        break;
        case 'B' :
        printf("good!!");
        break;
        case 'C' :
        printf("run!");
        break;
        case 'D' :
        printf("slowly~");
        break;
        default :
        printf("what?");
        break;
    }
    return 0;
}

switch case문을 작성할때 유의할점은 각 case마다 출력을 내고싶다면 꼭 break;를 걸어줘야한다.
만약에 case문에서 break가 안걸려있으면 D를 받아도
best!!!good!!run!slowly~으로 찍힌다. break를 걸지않으면 걸릴때까지 출력해버린다. 이런상황을 fall through 라고 부른다네요...
그리고 맞는 case가 없을때는 default case로 실행이된다.

  1. 월이 입력될 때 계절 이름이 출력되도록 해보자.

    월 : 계절 이름
    12, 1, 2 : winter
    3, 4, 5 : spring
    6, 7, 8 : summer
    9, 10, 11 : fall
    참고
    swtich( ).. case ... break; 제어문에서
    break;를 제거하면 멈추지 않고 다음 명령이 실행되는 특성을 이용할 수 있다.
#include <stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    switch(x)
    {
        case 12 :
        case 1 :
        case 2 :
        printf("winter");
        break;
        case 3 :
        case 4 :
        case 5:
        printf("spring");
        break;
        case 6 :
        case 7 :
        case 8 :
        printf("summer");
        break;
        case 9 :
        case 10 :
        case 11 :
        printf("fall");
        break;
    }
    return 0;
}

우리는 fall through를 이용할수있다, 바로 이예제처럼
12,1,2는 겨울이기때문에 12,1는 패스해버리고 2에서 winter를 출력하고, break를 걸어버리면
12,1,2모두 겨울로 처리된다.

좋은 웹페이지 즐겨찾기