반응형
08. 월을 입력받아 몇 분기인지를 출력하는 프로그램을 switch ~ case문을 이용해 작성하시오.
#include <stdio.h>
int main(void)
{
int month;
printf("월 입력:");
scanf_s("%d", &month);
switch (month)
{
case 1:
printf("1사분기입니다.");
break;
case 2:
printf("1사분기입니다.");
break;
case 3:
printf("1사분기입니다.");
break;
case 4:
printf("2사분기입니다.");
break;
case 5:
printf("2사분기입니다.");
break;
case 6:
printf("2사분기입니다.");
break;
case 7:
printf("3사분기입니다.");
break;
case 8:
printf("3사분기입니다.");
break;
case 9:
printf("3사분기입니다.");
break;
case 10:
printf("4사분기입니다.");
break;
case 11:
printf("4사분기입니다.");
break;
case 12:
printf("4사분기입니다.");
break;
default:
break;
}
return 0;
}
switch case문으로 작성하라 했으므로 월마다 12가지 케이스를 나누어서 작성했다.
09. 키보드로 태어난 년도를 입력받아 그 해의 띠를 출력하는 프로그램을 switch문으로 작성하시오.
#include <stdio.h>
int main(void)
{
int year, animal;
printf("월 입력:");
scanf_s("%d", &year);
animal = year % 12; //띠 판단
switch (animal)
{
case 0:
printf("당신은 원숭이띠입니다.");
case 1:
printf("당신은 닭띠입니다.");
break;
case 2:
printf("당신은 개띠입니다.");
break;
case 3:
printf("당신은 돼지띠입니다.");
break;
case 4:
printf("당신은 쥐띠입니다.");
break;
case 5:
printf("당신은 소띠입니다.");
break;
case 6:
printf("당신은 범띠입니다.");
break;
case 7:
printf("당신은 토끼띠입니다.");
break;
case 8:
printf("당신은 용띠입니다.");
break;
case 9:
printf("당신은 뱀띠입니다.");
break;
case 10:
printf("당신은 말띠입니다.");
break;
case 11:
printf("당신은 양띠입니다.");
break;
default:
break;
}
return 0;
}
마찬가지 문제이다. 띠를 판단할 수 있도록 year를 12로 나눈 나머지를 animal에 대입해 사용했다.
10. 키보드로 정수 하나와 계산 방법을 입력받은 뒤 계산 방법이 1이면 입력된 수를 이면 2배수를, 3이면 3배수를 출력하는 프로그램을 switch~case문을 이용해 작성하시오. 계산 방법으로 1,2,3 외의 입력이 들어오는 경우에는 '잘못된 연산자입니다.'라는 메시지를 출력한다.
#include <stdio.h>
int main(void)
{
int num, cal;
printf("수 입력:");
scanf_s("%d", &num);
printf("계산법(1,2,3):");
scanf_s("%d", &cal);
switch (cal)
{
case 1:
printf("입력한 수 %d의 1배수는 %d입니다.", num, num);
break;
case 2:
printf("입력한 수 %d의 2배수는 %d입니다.", num, 2 * num);
break;
case 3:
printf("입력한 수 %d의 3배수는 %d입니다.", num, 3 * num);
break;
default:
printf("잘못된 연산자입니다.");
break;
}
return 0;
}
수와 계산법을 입력받아 각각 num, cal에 대입한다. cal을 switch 인자로 넣어 계산법에 따라 다른 결과가 출력되도록 한다.
11. 양의 정수 하나를 입력받고 입력받은 수가 소수(prime number)인지 판단하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int x, n = 0;
printf("수 입력:");
scanf_s("%d", &x);
if (x == 2) printf("2는(은) 소수입니다.\n");
else
{
for (int i = 2; i < x; i++)
{
if (x % i == 0)
{
n = 0;
break;
}
else n = 1;
}
if (n == 1) printf("%d는(은) 소수입니다.\n", x);
if (n == 0) printf("%d는(은) 소수가 아닙니다.\n", x);
}
return 0;
}
2는 짝수이지만 소수이므로 특별히 처리했다. 2가 아닌 다른 수 x가 들어오면 x를 점점 증가하는 i로 나눠본다. 나누어떨어지면 소수가 아니다. 소수가 아니란 의미에서 n에 0을 대입한 후 반복문을 빠져나온다. 나누어떨어지지 않는다면 소수이므로 n에 1을 대입한다.
n이 0이면 소수가 아니다, n이 1이면 소수가 맞다고 출력하면 끝난다.
'에라토스테네스의 체'라는 효율적인 소수판정 알고리즘이 존재한다.
에서 다루기도 했다. 모르셨던 분들은 검색해서 한 번 살펴보시길 바란다.
12.숫자 하나(n)을 입력받은 후, 3의 배수를 그 수만큼 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int n = 0;
printf("출력할 3의 배수의 개수는:");
scanf_s("%d", &n);
for (int i = 1; i <= n; i++)
printf("%d ", i * 3);
return 0;
}
횟수를 입력받으므로 for문을 입력받은 n만큼 반복한다. i가 1부터 커지니 반복문 내에서 i * 3을 반복해주면 된다.
반응형
'프로그래밍 > C, C++' 카테고리의 다른 글
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 (19,20,21,22,23) (0) | 2020.07.26 |
---|---|
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 (13,14,15,16,17,18) (0) | 2020.07.25 |
소수점 이하 자리에 나오는 0을 없애고 싶을 때 (0) | 2020.05.25 |
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 5~7 (0) | 2018.03.17 |
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 1~4 (0) | 2018.03.03 |