본문 바로가기
Programming/컴퓨터프로그래밍및실습

[컴프실] 제6장: 조건문

by leziwn.cs 2023. 7. 8.
제어문
  • 조건문
  • 반복문

3가지 제어구조

 

if문, if-else문
//if문
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
	int number;
	printf("정수를 입력하세요: ");
	scanf("%d", &number);

	if (number > 0)
		printf("양수입니다.");
	else if (number = 0)
		printf("0입니다.");
	else
		printf("음수입니다.");

	return 0;
}

 

/*홀수인지 짝수인지 구별하는 프로그램*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int num;
	printf("정수를 입력하세요: ");
	scanf("%d", &num);

	if (num%2==0)
		printf("입력된 정수는 짝수입니다.");
	else
		printf("입력된 정수는 홀수입니다.");

}

 

/*분모가 0인지 판단하는 프로그램*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int son, mom;
	double answer=0;
	printf("분자와 분모를 입력하시오: ");
	scanf("%d%d", &son, &mom);

	if (mom == 0)
		printf("분모가 0이므로 계산이 불가합니다.\n");
	else {
		answer = (double)son / (double)mom; //형변환
		printf("답은 %lf입니다.\n", answer);
	}

	return 0;
}

 

/*윤년인지 판단하는 프로그램*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int year;
	printf("연도를 입력하세요: ");
	scanf("%d", &year);

	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
		printf("%d년은 윤년입니다.\n", year);
	else
		printf("%d년은 윤년이 아닙니다.\n", year);

	return 0;
}

 

/*학생들의 성적을 입력받아서 학점을 출력하는 프로그램*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int score;
	char alphabet;

	printf("성적을 입력하시오: ");
	scanf("%d", &score);

	if (score >= 90)
		printf("합격, 학점 A\n");
	else if (score >= 80)
		printf("합격, 학점 B\n");
	else if (score >= 70)
		printf("합격, 학점 C\n");
	else if (score >= 60)
		printf("합격, 학점 D\n");
	else
		printf("불합격, 학점 F\n");

	return 0;
}

 

/* 문자들을 분류하는 프로그램 */
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	char input;
	printf("문자를 입력하세요: ");
	scanf("%c", &input);

	if (input >= 'A' && input <= 'Z') //문자 입력받음
		printf("%c는 대문자입니다.\n", input);
	else if (input >= 'a' && input <= 'z')
		printf("%c는 소문자입니다.\n", input);
	else
		printf("%c는 숫자입니다.\n", input);

	return 0;

}

 

복합문

: 중괄호를 사용하여 문장들을 그룹핑하는 것

 

조건연산자
//조건연산자
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int score;
	printf("점수를 입력하세요: ");
	scanf("%d", &score);

	//조건연산자
	(score >= 60) ? printf("합격입니다.\n") : printf("불합격입니다.\n");

	return 0;
}

 

중첩 if

: if문에 다시 if문이 포함됨

 

Lab: 이차방정식
/*이차방정식*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h> //sqrt함수를 사용하기 위해 math.h 헤더파일 추가

int main(void)
{
	double a, b, c;
	double dis;

	printf("계수 a, 계수 b, 계수 c를 차례대로 입력하시오: ");
	scanf("%lf%lf%lf", &a, &b, &c);

	if (a == 0)
		printf("근은 %f입니다.\n", -c / b);
	else {
		dis = b * b - 4.0 * a * c;
		if (dis >= 0) {
			printf("방정식의 근은 %f입니다.\n", (-b + sqrt(dis)) / (2.0 * a)); //sqrt == 루트
			printf("방정식의 근은 %f입니다.\n", (-b - sqrt(dis)) / (2.0 * a));
		}
		else
			printf("실근이 존재하지 않습니다.");
	}
	return 0;
}

 

Lab: 산술 계산기
/* 산술 연산기 */
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	double a, b, result;
	char op;

	printf("수식을 입력하시오(예: 2+5)>>");
	scanf("%lf%c%lf", &a, &op, &b);
	
	if (op == '+') {
		result = a + b; // ==가 아니라, =이다.
		printf("%lf+%lf=%lf", a, b, result);
	}
	else {
		result = a - b;
		printf("%lf-%lf=%lf", a, b, result);
	}
	return 0;
}

 


switch 문

: 제어식의 값에 따라서 여러 경로 중에서 하나를 선택할 수 있는 제어 구조

  • default 문

switch 문에서 주의해야 할 점
정수의 범위를 나타낼 때

 

Lab: 달의 일수를 출력하는 프로그램
/*달의 일수를 출력하는 프로그램*/
//switch문 이용하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int month, answer;

	printf("달을 입력하시오: ");
	scanf("%d", &month);

	switch (month)
	{
	case 1: case 3: case 5: case 7: case 8: case 10: case 12:
		answer = 31;
		break;
	case 2:
		answer = 28;
		break;
	default:
		answer = 30;
		break;
	}
	printf("%d월의 일수는 %d입니다.\n", month, answer);
	return 0;
}

 

Lab: 산술 계산기
/*산술 계산기*/
//swith 문
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int a, b, answer;
	char op;

	printf("수식을 입력하시오(예: 2+5) >>");
	scanf("%d%c%d", &a, &op, &b);

	switch (op)
	{
	case '+':
		answer = a + b;
		break;
	case '-':
		answer = a - b;
		break;
	case '*':
		answer = a * b;
		break;
	case '/':
		answer = a / b;
		break;
	case '%':
		answer = a % b;
		break;
	default:
		printf("잘못된 입력입니다.\n");
	}
	printf("%d%c%d=%d\n", a, op, b, answer);

	return 0;
}

 


goto 문

: 조건없이 어떤 위치로 점프

  • 사용하지 않는 것이 좋음