![article thumbnail image](https://blog.kakaocdn.net/dn/pZDBO/btqXY0bKgmw/SBPANz3fY0cjoc9Jvt5VhK/img.jpg)
1. 23.8 심사문제 : 비트 논리 연산자 사용하기
문제 : 표준 입력으로 두 정수(unsigned int)가 입력됩니다. 입력된 두 정수의 비트 연산 결과를 각 줄에 출력하는 프로그램을 만드세요.
정답 :
#include <stdio.h>
int main(void){
unsigned int num1, num2;
scanf("%d %d",&num1,&num2);
printf("%u\n",num1^num2);
printf("%u\n",num1|num2);
printf("%u\n",num1&num2);
printf("%u\n",~num1);
return 0;
}
2. 23.9 심사문제 : 시프트 연산자 사용하기
문제 : 표준 입력으로 정수가 입력됩니다. 입력된 정수를 왼쪽으로 20번, 오른쪽으로 4번 시프트 연산하여 결과를 출력하는 프로그램을 만드세요.
정답 :
#include <stdio.h>
int main(void){
unsigned long long num;
scanf("%lld",&num);
printf("%llu",num<<20>>4);
return 0;
}
unsigned long long 정수 자료형의 scanf 서식시정자와 printf 서식지정자에 맞춰 출력할 필요가 있다.
3. 25.7 심사문제 : 괄호 사용하기
문제 : 표준 입력으로 세 정수가 입력됩니다. 다음 순서대로 연산한 뒤 결과가 출력되게 만드세요.
1. num1과 num2를 더하기
2. 1번 결과에 10을 곱하기
3. 2번 결과에서 num3을 빼기
정답 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1;
int num2;
int num3;
scanf("%d %d %d", &num1, &num2, &num3);
printf("%d\n", (num1+num2)*10 -num3);
return 0;
}
4. 23.8 심사문제 : 비트 논리 연산자 사용하기
문제 : 표준 입력으로 문자 'f', 'c', 'p' 중 하나가 입력됩니다. 입력된 문자가 'f'라면 "환타", 'c'라면 "콜라", 'p'라면 "포카리스웨트"를 출력하고, 아무 문자에도 해당되지 않으면 "판매하지 않는 메뉴"를 출력하는 프로그램을 만드세요.
정답 :
#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;
}
5. 27.12 심사문제 : 알파벳 순서로 출력하기
문제 : 표준 입력으로 문자 하나가 입력됩니다. 입력된 문자부터 z까지 순서대로 출력하는 프로그램을 만드세요.
정답 :
#include <stdio.h>
int main(void){
char ch;
scanf("%c",&ch);
for ( ; ch<='z'; ch++ ){
printf("%c",ch);
}
return 0;
}
6. 27.12 심사문제 : 알파벳 순서로 출력하기
문제 : 표준 입력으로 금액이 입력됩니다. 1회당 요금은 1,200원이고, 교통카드를 사용했을 때마다의 잔액을 각 줄에 출력하는 프로그램을 만드세요.
정답 :
#include <stdio.h>
int main(void){
int money;
scanf("%d",&money);
while (money>=1200){
money-=1200;
printf("%d\n",money);
}
return 0;
}
교통카드를 사용할 수 있는 최소 잔액은 1회 요금과 같은 1,200원이므로 1,200원 이상일 때만 반복하도록 만든다.
7. 29.10 심사문제 : 숫자의 합 구하기
문제 : 표준 입력으로 정수가 입력됩니다(입력 값의 범위는 0~1000). 다음 소스 코드를 완성하여 0부터 입력된 숫자까지의 합이 출력되게 만드세요.
정답 :
#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;
}
0부터 입력된 숫자까지의 합을 구하려면 세 변수를 적절히 활용해야 한다.
여기서는 변수 i를 활용하여 num1에 저장된 값까지 반복하게 해 합을 구하면 된다.
8. 30.7 심사문제 : 두 사이의 숫자 중 7로 끝나는 숫자 출력하기
문제 : 표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~200, 두 번째 입력 값의 범위는 10~200이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 다음 소스 코드를 완성하여 첫 번째 정수와 두 번째 정수 사이의 숫자 중 7로 끝나지 않는 숫자가 출력되게 만드세요.
정답 :
#define _CRT_SECURE_NO_WARNINGS
#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;
}
9. 23.8 심사문제 : 비트 논리 연산자 사용하기
문제 : 표준 입력으로 삼각형의 높이가 입력됩니다(입력 값의 범위는 3~10). 입력된 높이만큼 산 모양으로 별을 출력하는 프로그램을 만드세요.
정답 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int height;
scanf("%d", &height);
for (int i = 0; i < height; i++) {
for (int j = 0; j < 2 * height - 1; j++) {
if ((j + i >= height - 1) && (j - i <= height - 1))
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
10. 32.6 심사문제 : 중첩 루프 빠져나오기
문제 : 다음 소스 코드를 완성하여 200과 300이 각 줄에 출력되게 만드세요.
정답 :
#include <stdio.h>
int main()
{
int num1 = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (num1 == 10)
goto EXIT2;
num1++;
}
}
EXIT1:
printf("100\n");
EXIT2:
printf("200\n");
EXIT3:
printf("300\n");
return 0;
}
goto로 중첩 루프를 한 번에 빠져나와야 하는데 레이블이 EXIT1, EXIT2, EXIT3 세 개가 있다. 여기서 EXIT1로 가면 EXIT1, EXIT2, EXIT3의 코드가 차례대로 실행되고, EXIT2로 가면 EXIT2, EXIT3의 코드가 차례대로 실행된다.
11.
12. 33.8 심사문제 : 5와 11의 배수, 공배수 처리하기
문제 : 표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~1000, 두 번째 입력 값의 범위는 10~1000이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 5의 배수일 때는 "Fizz", 11의 배수일 때는 "Buzz", 5와 11의 공배수일 때는 "FizzBuzz"를 출력하는 프로그램을 만드세요.
정답 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1, num2;
scanf("%d %d", &num1, &num2);
for (; num1 <= num2; num1++) {
if (num1 % 5 == 0 && num1 % 11 == 0)
printf("FizzBuzz\n");
else if (num1 % 5 == 0)
printf("Fizz\n");
else if (num1 % 11 == 0)
printf("Buzz\n");
else
printf("%d\n", num1);
}
return 0;
}
'Programming Languages > C' 카테고리의 다른 글
[P4C] C언어 코딩 도장 : UNIT 29 ~ UNIT 31 (0) | 2021.02.21 |
---|---|
[P4C] C언어 코딩 도장 : UNIT 26 ~ UNIT 28 (0) | 2021.02.20 |
[P4C] C언어 코딩 도장 : UNIT 23 ~ UNIT 25 (0) | 2021.02.19 |
[P4C] C언어 코딩 도장 : UNIT 20 ~ UNIT 22 (0) | 2021.02.19 |
[P4C] C언어 코딩 도장 : UNIT 17 ~ UNIT 19 (0) | 2021.02.18 |