티스토리 뷰

BackEnd/C

[10일차] 제어문 복습

JINSUKUKU 2021. 2. 20. 07:21

📌 Unit 17. if문

✔ 17.7 연습 문제

#include <stdio.h>
 
int main()
{
    char c1 = 'k';
 
    if (c1 == 'k')
    {
        printf("k입니다.\n");
    }
 
    return 0;
}

✔ 17.8 심사 문제

#include <stdio.h>

int main(void){
  int age;
  scanf("%d", &age);
  if(age<18){
  	printf("청소년 관람 불가");	
  }	
  return 0;
}

 

📌 Unit 26. switch문

✔ 26.7 연습 문제

2의 n제곱 값을 알고 싶다면, 1<<n을 사용하면 되는데, 원리는 아래와 같다.왼쪽 비트 연산자 << 는 먼저 비트 연산자가 적용될 값을 2진수로 바꾸고, 오른쪽에 n개만큼 0을 추가한다. 1에 비트 연산자 << 를 사용하면 2진수는 자릿수가 하나씩 늘어나므로, 곧 2의 n제곱의 형태를 가진다. 즉, 임의의 정수 a에 2의 n제곱을 곱한 값을 알고 싶다면, a*(1<<b) 라는 식을 사용해 확인할 수 있다.

 

  n 2진수 2진수 → 10진수 10진수
1 - 1    (2^0)*0 1
1<<1 1 10    (2^1)*1 + (2^0)*0 2
1<<2 2 100    (2^2)*1 + (2^1)*0 + (2^0)*0 4
1<<3 3 1000    (2^3)*1 + (2^2)*0 + (2^1)*0 + (2^0)*0 8
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int num1 = 0;

    scanf("%d", &num1);

    switch (num1)
    {
    case 1 << 1:
        printf("2\n");
        break;
    case 1 << 2:
        printf("4\n");
        break;
    case 1 << 3:
        printf("8\n");
        break;
    default:
        printf("default\n");
        break;
    }

    return 0;
}

✔ 26.8 심사 문제

judge_switch_vending_machine.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    char memu;

    scanf("%c", &memu);

    switch (memu)
    {
         case 'f' :
         	printf("환타");
            break;
         case 'c' :
         	printf("콜라");
            break;
         case 'p' :
         	printf("포카리스웨트");
            break;
         default :
         	printf("판매하지 않는 메뉴");
            break;
    }

    return 0;
}

 

 

📌 Unit 27. for문

✔ 27.11 연습 문제

#include <stdio.h>

int main()
{
    for (int i=2, j=5; i<=32; i*= 2, j--)
    {
        printf("%d %d\n", i, j);
    }

    return 0;
}

✔ 27.12 심사 문제

#include <stdio.h>

int main(void){
  char c;
  scanf("%c",&c);
  for(int i=c; i<='z'; i++){
  	printf("%c", i);
  }
  return 0;
}

 

 

 

📌 Unit 28. while문

✔ 28.10 연습 문제

반복 과정을 하나하나 살펴본다면 아래의 표와 같다. 128<<=1 한 결과는 1 0000 0000 인데, 8비트만큼만 표현할 수 있고, 8비트를 벗어나게 되는 경우 트렁케이트( TRUNCATE) 되므로 i가 0일 때 반복을 멈춘다.

 

10진수 i 출력 2진수 i <<=1 10진수로 변환
i = 1 1 0000 0001 0000 0010 2
i = 2 2 0000 0010 0000 0100 4
i = 4 4 0000 0100 0000 1000 8
i = 8 8 0000 1000 0001 0000 16
i = 16 16 0001 0000 0010 0000 32
i = 32 32 0010 0000 0100 0000 64
i = 64 64 0100 0000 1000 0000 128
i = 128 128 1000 0000 0000 0000 0
i = 0 X 1 0000 0000 X x
#include <stdio.h>

int main()
{
    unsigned char i = 1;
    while ( i!=0 )
    {
        printf("%u\n", i);
        i <<= 1;
    }
    return 0;
}

✔ 28.11 심사 문제

#include <stdio.h>

int main(void){
  int num, cnt;
  scanf("%d",&num);
  cnt = num/1200;
  for(int i=1; i<=cnt; i++){
      num-=1200;
      printf("%d\n",num);
  }
  return 0;
}

 

 

 

📌 Unit 29. do-while문

✔ 29.9 연습 문제

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    char c1;

    do
    {
        scanf("%c", &c1);
    } while (c=='q');

    printf("프로그램 종료\n");

    return 0;
}

✔ 29.10 심사 문제

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    unsigned int num1;
    unsigned int sum = 0;

    scanf("%d", &num1);

    unsigned int i = 0;
    do
    {
        sum+=i;
        i++;
    } while (i <= num1);

    printf("%d\n", sum);

    return 0;
}

 

 

 

📌 Unit 30. break, continue문

✔ 30.7 심사 문제

#include <stdio.h>

int main()
{
    int num1;
    int num2;
    int i;

    scanf("%d %d", &num1, &num2);
    
    i = num1;

    while (1)
    {
    	if(i%10==7){
            i++;
            continue;
        }

        if(i>num2) break;
        printf("%d ", i);
            i++;
    }

    return 0;
}

 

 

 

 

 

[참고] 한빛미디어-혼자 공부하는 C언어 유튜브 강의 / 엘리스 트랙-혼자 공부하는 C언어 / 길벗-C언어 코딩 도장 / 위키백과

'BackEnd > C' 카테고리의 다른 글

[12일차] 포인터  (0) 2021.02.23
[11일차] 함수/배열 복습  (0) 2021.02.23
[8일차] 포인터의 선언과 사용  (0) 2021.02.17
[7일차] 2. 문자열 관련 함수 정리  (0) 2021.02.17
[7일차] 1. 문자열(char형 배열)  (0) 2021.02.16
댓글
«   2025/04   »
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
최근에 올라온 글
글 보관함
Total
Today
Yesterday