3장 - 프로그램 흐름 : 분기

seojin·2021년 8월 7일
0

c언어 문제풀이

목록 보기
3/3

[3-1] 읽어 들인 정숫값이 10의 배수가 아니면 ' 이 수는 10의 배수가 아닙니다.'를 출력하는 프로그램을 작성하자.

#include <stdio.h> 

int main() {
	int a;

	printf("입력값 : ");
	scanf("%d", &a);

	if (a % 10)
		printf("이 수는 10의 배수가 아니다");

	// if 문 - 만약 ~이라면 , 식을 평가하여 그 값이 0이 아니라면 구문을 실행한다. 

	return 0;
}

[3-2] 정숫값 2개를 읽어 들인 다음, 후자가 전자의 약수라면 "B는 A의 약수입니다."를 출력하고, 그렇지 않으면 "B는 A의 약수가 아닙니다" 라고 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a,b;

	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);

	if (a % b)
		printf("B는 a의 약수가 아니다\n");
	else
		printf("B는 A의 약수이다\n");

	return 0;
}

[3-3] 정숫값을 읽어 들여 그 부호(양수/음수/0)을 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a;

	printf("a값 입력 : ");
	scanf("%d", &a);
	
	if (a == 0)
		printf("부호는 0 \n");
	else if (a > 0)
		printf("양수 \n");
	else
		printf("음수\n");

	return 0;
}

[3-4] 정숫값을 읽어 들여 그 절댓값을 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a;

	printf("a값 입력 : ");
	scanf("%d", &a);
	
	if (a < 0)
		a = -a;

	printf("%d", a);

	return 0;
}

[3-5] 정숫값 2개를 읽어 들여 이들 값의 크기를 비교하는 프로그램을 작성하여라.

#include <stdio.h>

int main() {
	int a,b;

	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);
	
	if (a < b)
		printf("a가 b보다 작습니다.\n");
	else if (a == b)
		printf("a와 b는 같습니다.\n");
	else
		printf("a는 b보다 큽니다.\n");

	return 0;
}

등가 연산자나 관계 연산자가 1 또는 0의 값을 생성하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a = 3;
	int b = 7;
	
	printf("a == b : %d \n", a == b); // 0 
	printf("a != b : %d \n", a != b); // 1

	printf("a > b : %d \n", a > b); // 0
	printf("a >= b : %d \n", a >= b); // 0
	printf("a < b : %d \n", a < b); // 1
	printf("a <= b : %d \n", a <= b); // 1

	return 0;
}

[3-7] 정숫값 3개를 읽어 들인 다음, 그 중 최솟값을 구해 출력하는 프로그램을 작성하자.

int main() {
	int a, b, c;
	int min;
	
	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);
	printf("c값 입력 : ");
	scanf("%d", &c);

	min = a;
	if (b < min)
		min = b;
	if (c < min)
		min = c;

	printf("최솟값은 %d이다. \n", min);

	return 0;
}

[3-8] 정숫값 4개를 읽어 들여 그 최댓값을 출력하는 프로그램을 작성하자.

int main() {
	int a, b, c, d;
	int max;
	
	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);
	printf("c값 입력 : ");
	scanf("%d", &c);
    printf("d값 입력 : ");
	scanf("%d", &d);

	max = a;
	if (b > max)
		max = b;
	if (c > max)
		max = c;
    if (d > max)
		max = d;

	printf("최댓값은 %d이다. \n", max);

	return 0;
}

[3-9] 정숫값 2개를 읽어 들인 다음 그 차이를 구해서 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a, b;
	int sub;
	
	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);

	sub = a - b; 

	if (sub < 0)
		sub = -sub;

	printf("차이는 %d이다. \n", sub);

	return 0;
}

[3-10] 문제 [3-7]의 프로그램을 if문이 아닌 조건 연산자를 이용한 프로그램으로 변경하자.

삼항연산자 (조건연산자)
=> ( 조건 ) ? ( 조건이 참일때 수행 ) : ( 조건이 거짓일 때 수행 )

#include <stdio.h>

int main() {
	int a, b, c;
	int sub;
	
	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);
	printf("c값 입력 : ");
	scanf("%d", &c);

	printf(" 최솟값 : % d \n", (a<b)?((a<c)? a:c ) : ((b<c) ? b:c));

	return 0;
}

[3-11] 정숫값 3개를 읽어 들여 이들 값이 모두 같으면 "3개 값이 모두 같습니다." 두 값이 같으면 "2개 값이 같습니다.", 모두 다르면 "3개 값은 모두 다릅니다." 라고 출력하는 프로그램을 작성하자.

논리 AND 연산자 : &&
논리 OR 연산자 : ||

#include <stdio.h>

int main() {
	int a, b, c;
	
	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);
	printf("c값 입력 : ");
	scanf("%d", &c);

	if (a == b && b == c) {
		printf("3개 모두 같습니다.\b");
	}
	else if (a == b || b == c || c == a) {
		printf("2개 값이 같습니다.\n");
	}
	else {
		printf("모두 다릅니다\n");
	}


	return 0;
}

[3-12] 정숫값 2개를 읽어 들여 이들 값의 차이가 10 이상이면 "두 값의 차이는 11 이상입니다.", 그렇지 않으면 "두 값의 차이는 10 이하입니다." 라고 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a, b;
	int sub;
	
	printf("a값 입력 : ");
	scanf("%d", &a);
	printf("b값 입력 : ");
	scanf("%d", &b);

	sub = a - b;

	if (sub < 0) {
		sub = -sub;
	}

	if (sub >= 11) {
		printf("두 값의 차이는 11 이상입니다.\n");
	}
	else {
		printf("두 값의 차이는 10 이하입니다.\n");
	}

	return 0;
}

[3-13] 키보드로 입력한 점수에 따라 우수/양호/가능/불가를 판정하여 출력하는 프로그램을 작성하자. 판정은 다음과 같다. 0~59->불가/60~69->가능/70~79->양호/80~100->우수

#include <stdio.h>

int main() {
	int a;
	
	printf("점수 입력 : ");
	scanf("%d", &a);

	if (a >= 80) {
		printf("우수\n");
	}
	else if (a >= 70) {
		printf("양호\n");
	}
	else if (a >= 60) {
		printf("가능\n");
	}
	else {
		printf("불가\n");
	}

	return 0;
}

판정 횟수가 많은 코드는 효율적이지 못한 코드
ex. 위와 같이 코드를 짜는 대신 else if (point>=80 && point<= 100) 이런 식으로 짜면 효율적 X.

[3-14] 정숫값 2개를 읽어 들여 두 값이 같으면 "두 값은 같습니다"라고 출력하고, 그렇지 않으면 작은 값과 큰 값을 모두 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a,b;
	
	printf("a : ");
	scanf("%d", &a);
	printf("b : ");
	scanf("%d", &b);

	if (a == b)
		printf("두 값은 같습니다\n");

	else {
		if (a < b) {
			printf("작은 값은 %d, 큰 값은 %d\n", a, b);
		}
		else {
			printf("작은 값은 %d, 큰 값은 %d\n", b,a);
		}
	}

	return 0;
}

[3-15] 정숫값을 읽어 들여 홀수인지 짝수인지 판단한 후 출력하는 프로그램을 작성하자.

switch case
: 어떤 단일 식의 값을 기준으로 프로그램 흐름을 여러 개로 분기하고 싶은 경우, switch 문을 이용하면 간결하게 표현할 수 있다.
: switch -> ( 식 ) -> 구문
이 때 switch문에서 빠져나가고 싶다면 break;를 사용하면 된다.

#include <stdio.h>

int main() {
	int a;
	
	printf("숫자 하나를 입력하시오.");
	scanf("%d", &a);

	switch (a % 2) {
	case 0: printf("짝수 \n");
	case 1: printf("홀수 \n");
	}

	return 0;
}

[3-16] 월을 정숫값으로 읽어 들인 다음, 그 계절을 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a;
	
	printf("몇 월인지 입력하시오. ");
	scanf("%d", &a);

	if (a <= 2 || a==12) {
		printf("겨울\n");
	}
	else if (a <= 5) {
		printf("봄\n");
	}
	else if (a <= 8) {
		printf("가을\n");
	}
	else if (a <= 11) {
		printf("겨울\n");
	}

	return 0;
}

0개의 댓글

관련 채용 정보