본문 바로가기
프로그래밍/C | C++

[c언어]3/6/9게임 출력 프로그램 (두가지 방법)

by 청량리 물냉면 2020. 11. 9.
반응형
문제

 

사용자에게 값을 입력받고 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일때 *을 출력한다.

 

 

반응형