티스토리 뷰
📌 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 |
댓글