관리 메뉴

공부 기록장 💻

C언어 Express 6장 Programming 심화 문제 추가 본문

# Language & Tools/C

C언어 Express 6장 Programming 심화 문제 추가

dream_for 2021. 1. 22. 17:55

 

 

1. switch-case문을 사용해 모음, 자음 구분하는 프로그램

(+문자가 아닌 경우 오류 메시지를 출력하고, 다시 문자를 입력 받는 코드 추가)

 

#include <stdio.h>

int main(void) {

	char ch;
	
	do {
		printf("문자를 입력하시오: ");
		scanf_s(" %c", &ch);
	} while (ch <= 'A' || ch >= 'z');
		
		switch (ch)
		{
		case 'a':
		case 'e':
		case 'i':
		case 'o':
		case 'u':
			printf("모음입니다.\n");
			break;
		default:
			printf("자음입니다.\n");
			break;
		}

	return 0;
}

 

반복문 do~ while문을 사용해서 입력받는 문자를 판별하는 코드를 추가한다.

getchar()함수를 이용하는 경우, 반복문이 작동할 때 enter키가 입력 버퍼로 들어가는 경우가 있으므로 유의해야 한다.

그냥 간단하게 scanf() 함수 사용함.  

 

 

 

 

2. 약수를 검사하는 프로그램

(+조건 연산자를 사용해보기. 그리고 두 수의 순서가 바뀌어도 올바르게 작동하는 프로그램 작성하기. 수의 대소 판별하는 코드 추가)

 

#include <stdio.h>

int main(void) {

	int x, y;

	printf("정수를 입력하시오: ");
	scanf_s("%d", &x);
	printf("정수를 입력하시오: ");
	scanf_s("%d", &y);

	if (x > y)
		x % y == 0 ? printf("%d는 %d의 약수입니다.\n", y, x) : printf("%d는 %d의 약수가 아닙니다.\n", y, x);
	else
		y % x == 0 ? printf("%d는 %d의 약수입니다.\n", x, y) : printf("%d는 %d의 약수가 아닙니다.\n", x, y);

	return 0;
}

 

조건 연산자를 다른 대안으로 사용해보는 건 나 뿐 일 것 같다.....ㅎㅎ

 

 

 

 

3. 세 수 중 가장 작은 값 결정하는 프로그램

(+ 1. if-else문 사용하기 / 2. 전처리기를 이용한 매크로 함수 작성)

 

#include <stdio.h>

int main(void) {

	int x, y, z;

	printf("3개의 정수 입력: ");
	scanf_s("%d %d %d", &x, &y, &z);

	if (x < y) {
		if (x < z)
			printf("제일 작은 정수는 %d입니다.\n", x);
		else
			printf("제일 작은 정수는 %d입니다.\n", z);
	}
	else {
		if (y < z)
			printf("제일 작은 정수는 %d입니다.\n", y);
		else
			printf("제일 작은 정수는 %d입니다.\n", z);
	}

	return 0;
}

 

첫번째 방법은 무난하게 다중 if문과 if-else문을 이용하여 작은 수 구하기.

 

#include <stdio.h>
#define GetSmall(x,y) (x)<(y)?(x):(y)

int main(void) {
	
	int x, y, z;

	printf("3개의 정수 입력: ");
	scanf_s("%d %d %d", &x, &y, &z);

	printf("제일 작은 수는 %d입니다.\n", GetSmall(z,GetSmall(x, y)));

	return 0;
}

 

두번째는 매크로 함수를 작성하여 코드 한 줄로 가장 작은 수를 구하는 방법이다.

주의할 부분은 매크로 함수 정의 할 때, 각각의 매개 변수의 값을 괄호에 넣어주어야 한다는 점이다. 

 

 

 

 

4. 컴퓨터와 가위, 바위, 보 게임 하는 프로그램 작성

(+그만하고 싶을 때까지 게임할 수 있도록 반복/조건문 이용하여 작성하기.

그리고 승패의 확실한 증거를 대라! 컴퓨터가 선택한 것이 무엇인지 출력하는 코드 작성)

 

#include <stdio.h>
#include <time.h>

int main(void) {

	int choice, computer;
	srand(time(NULL));

	while (1) {
		computer = rand() % 3 + 1;

		printf("선택하시오(1: 가위, 2: 바위, 3: 보, 0: 게임 종료)\n");
		scanf_s("%d", &choice);
		if (choice == 0) break;

		switch (computer) {
		case 1:
			if (choice == 1) printf("비겼습니다.\n");
			else if (choice == 2) printf("사용자가 이겼습니다.\n");
			else printf("사용자가 졌습니다.\n");
			printf("컴퓨터의 선택은 가위였습니다.\n\n");
			break;
		case 2:
			if (choice == 2) printf("비겼습니다.\n");
			else if (choice == 3) printf("사용자가 이겼습니다.\n");
			else printf("사용자가 졌습니다.\n");
			printf("컴퓨터의 선택은 바위였습니다.\n\n");
			break;
		case 3:
			if (choice == 3) printf("비겼습니다.\n");
			else if (choice == 1) printf("사용자가 이겼습니다.\n");
			else printf("사용자가 졌습니다.\n");
			printf("컴퓨터의 선택은 보였습니다.\n\n");
			break;
		}
	}

	return 0;
}

 

 

728x90
반응형
Comments