반응형
문제
사용자에게 값을 입력받고 3/6/9게임을 진행하는 프로그램을 만드시오
※일의 자리수가 3,6,9의 배수인 경우에는 *을 출력
실행화면
코드
첫번째 코드
#include <stdio.h>
int main() {
printf("369게임\n");
int num;
printf("수를 입력해주세요: ");
scanf_s("%d", &num);
for (int i = 1; i <= num; i++) {
if ((i-3) % 10 == 0 || (i-6) % 10 == 0 || (i-9)%10 == 0) {
printf("* ");
}
else {
printf("%d ", i);
}
}
}
두번째 코드
#include <stdio.h>
int main() {
printf("369게임\n");
int num;
printf("수를 입력해주세요: ");
scanf_s("%d", &num);
for (int i = 1; i <= num; i++) {
int j = i%10;
if (j == 3 || j == 6 || j == 9) {
printf("* ");
}
else {
printf("%d ", i);
}
}
}
코드 설명
첫번째 코드
for (int i = 1; i <= num; i++) {
if ((i-3) % 10 == 0 || (i-6) % 10 == 0 || (i-9)%10 == 0) {
//숫자에 3,6,9가 들어가면 *을 입력하는 코드
printf("* ");
}
else {
printf("%d ", i); //그 이외의 경우에는 i값을 그대로 출력
}
}
<3, 6, 9의 숫자가 들어가는 수를 거르기>
1. 3이 들어가는 경우 : 순차 증가하는 i에 3을 빼면그 값은 0, 10, 20... 으로 10의 배수가 된다. (0제외)
2. 6이 들어가는 경우 : 순차 증가하는 i에 6을 빼면 그 값은 0, 10, 20... 으로 10의 배수가 된다. (0제외)
3. 9가 들어가는 경우 : 순차 증가하는 i에 9를 빼면그 값은 0, 10, 20... 으로 10의 배수가 된다. (0제외)
위 세 가지 경우를 제외하면 3, 6, 9를 뺀 수가 10의 배수가 되는 경우는 없다. (ex. 14-3 =11, 200-6 =194, 43-9=34...)
이전 포스팅에서 다룬 약수/배수 관련 개념을 참고하여 생각했을 때,
위 세 경우에서 도출된 값을 10으로 나누면 모두 나머지가 0이다. (0나누기 10의 나머지 역시 0이다.)
마지막으로, 세 가지 경우를 or 연산자로 연결한다.
<그 외>
위 세가지 외의 경우에는 i값을 그대로출력한다.
두번째 코드
for (int i = 1; i <= num; i++) {
int j = i%10;
if (j == 3 || j == 6 || j == 9) {
printf("* ");
}
else {
printf("%d ", i);
}
}
j라는 변수를 하나 선언하여 i값을 10으로 나눈 나머지를 저장한다.
나머지가 3이나 6이나 9일때 *을 출력한다.
반응형
'프로그래밍 > C | C++' 카테고리의 다른 글
[c언어] 약수 출력 프로그램(for문 사용) (0) | 2020.11.09 |
---|---|
[c언어]입력받은 수만큼 숫자가 증가하는 프로그램(이중for문) (0) | 2020.11.09 |
[c언어]배열: 입력받은 숫자를 거꾸로 출력 (0) | 2020.11.09 |
[c언어]배열: 최대/최솟값 출력 (0) | 2020.11.09 |
[c언어]배열: 짝수의 개수 출력 (0) | 2020.11.09 |