switch (변수) {
case 값1:
// 값1일 때 실행되는 코드
break;
case 값2:
// 값2일 때 실행되는 코드
break;
case 값3:
// 값3일 때 실행되는 코드
break;
default:
// 어떤 값과도 일치하지 않을 때 실행되는 코드
break;
}
목차
드디어 조건문을 포스팅하네요. 제가 처음 C언어를 공부하면서 처음으로 흥미있게 공부했던 파트입니다. 이전까지는 문구를 띄운다던지, 계산을 한다든것만 구현가능했지만, 이 파트를 공부한 후로는 드디어 '프로그램'이라 할만한것을 만들 수 있습니다.
조건문이란 무엇인가
조건문은 프로그램의 흐름을 제어하는 구조로, 주어진 조건이 참인지 거짓인지에 따라 특정 코드 블록을 실행하거나 건너뛰게 합니다. 이를 통해 프로그램이 더 유연하고 지능적으로 동작할 수 있습니다.
조건문은 일반적으로 다음과 같은 요소로 구성됩니다
-조건식 : 참 또는 거짓 값을 반환하는 표현식입니다.
-실행 블록 : 조건식이 참일 때 실행되는 코드 블록입니다.
조건문에는 다양한 종류가있습니다.
if 조건문
if 조건문
가장 기본적인 조건문으로, 주어진 조건이 참일 때만 특정 명령을 실행합니다.
if (조건식)
참;
if-else 조건문
주어진 조건이 참일 때와 거짓일 때 각각 다른 명령을 실행합니다
if (조건식)
참;
else
거짓;
실습예제
년도를 입력받아 윤년인지 아닌지 알려주는 프로그램을 작성하시오
#include<stdio.h>
int main(void)
{
int year, result;
printf("년도를 입력하세요");
scanf("%d", &year);
result = year % 4;
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
printf("윤년");
else
printf("윤년아님");
return 0;


result = year % 4;: year 변수를 4로 나눈 나머지를 result에 저장합니다.
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)): 윤년을 판별하는 조건문입니다.
조건은 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않거나, 400으로 나누어 떨어지면 윤년입니다.
printf("윤년입니다.\n");: 조건이 참일 경우 "윤년입니다."를 출력합니다.
else: 조건이 거짓일 경우.
printf("윤년이 아닙니다.\n");: "윤년이 아닙니다."를 출력합니다.
이렇게 if는 조건이 참일경우 출력 조건이 거짓일경우 다른거 출력 이렇게 두가지경우일때 if-else문을 사용합니다.
else-if 조건문
else if 조건문은 여러 조건(2개이상의 조건)을 순차적으로 검사하여 조건에 맞는 코드를 실행하도록 합니다. 이는 단일 if 또는 if-else 문보다 좀 더 복잡한 조건을 처리할 때 유용합니다. else if 문을 사용하면 코드의 가독성을 높이고, 여러 조건을 한 번에 처리할 수 있습니다.
if (조건식1) {
// 조건식1이 참일 때 실행되는 코드
} else if (조건식2) {
// 조건식2가 참일 때 실행되는 코드
} else if (조건식3) {
// 조건식3이 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
실습예제
성적확인 프로그램을 작성하시오
조건(60점이상은 합격 문구 출력 90점이상, 80점이상 70점이상 60점이상은 각각 A B C D도 함께출력, 60점미만은 F불합격
#include<stdio.h>
int main(void)
{
int score;
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");
}


조건 확인 및 출력: if, else if, else 조건문을 이용해 성적에 따른 학점을 출력합니다.
성적이 90 이상일 경우: "합격 : 학점 A"
성적이 80 이상일 경우: "합격 : 학점 B"
성적이 70 이상일 경우: "합격 : 학점 C"
성적이 60 이상일 경우: "합격 : 학점 D"
그 외 성적일 경우: "불합격 : 학점 F"
정리하면 else if는 2개이상의 조건을 다루때 사용됩니다.
실습예제
이차방정식의 근을 구하는 프로그램을 작성하시오
#include<stdio.h>
#include<math.h> // sqrt 함수를 사용하기 위해 필요
int main(void)
{
int a, b, c;
printf("계수 a 계수 b 계수 c를 차례로 입력하세요\n");
scanf("%d %d %d", &a, &b, &c);
if (a == 0){
// printf 안에서 계산이 되어야 합니다.
printf("방정식의 근은 %lf 입니다.\n", -(double)c / b);
} else {
double D = (b * b - 4.0 * a * c);
if (D > 0) {
// 근의 공식에서 분자 전체를 계산 후 나누기 해야 합니다.
printf("방정식의 실근은 %lf입니다.\n", (-b + sqrt(D)) / (2.0 * a));
printf("방정식의 실근은 %lf입니다.\n", (-b - sqrt(D)) / (2.0 * a));
} else {
printf("실근이 존재하지 않습니다.\n");
}
}
return 0;
}


#include: sqrt 함수를 사용하기 위해 수학 라이브러리를 포함합니다.
입력 받기: printf와 scanf를 사용해 사용자로부터 계수 a, b, c를 입력받습니다.
1차 방정식 확인: if (a == 0) 조건문에서 a가 0이면 1차 방정식으로 간주하고, -(double)c / b를 계산하여 근을 출력합니다.
이차 방정식 근 계산: 판별식 계산: double D = (b * b - 4.0 * a * c);를 통해 판별식을 계산합니다.
두 개의 실근 확인: if (D > 0) 조건문에서 D가 양수이면 두 개의 실근을 출력합니다.
실근 없음: 그 외의 경우 실근이 존재하지 않음을 출력합니다.
switch-case 조건문
switch-case 문은 변수의 값을 평가하고, 그 값에 따라 여러 코드 블록 중 하나를 실행하는 조건문입니다. 여러 개의 if-else 문을 사용하는 대신, switch-case 문을 사용하면 코드가 더 간결하고 명확해집니다.
switch (변수) {
case 값1:
// 값1일 때 실행되는 코드
break;
case 값2:
// 값2일 때 실행되는 코드
break;
case 값3:
// 값3일 때 실행되는 코드
break;
default:
// 어떤 값과도 일치하지 않을 때 실행되는 코드
break;
}
실습예제
위에서 학습한 성적확인 프로그램을 작성하시오
조건(60점이상은 합격 문구 출력 90점이상, 80점이상 70점이상 60점이상은 각각 A B C D도 함께출력, 60점미만은 F불합격)
#include<stdio.h>
int main(void) {
int score;
printf("점수를 입력하세요: ");
scanf("%d", &score);
switch(score / 10) {
case 10:
case 9:
printf("등급: A\n");
break;
case 8:
printf("등급: B\n");
break;
case 7:
printf("등급: C\n");
break;
case 6:
printf("등급: D\n");
break;
default:
printf("등급: F\n");
break;
}
return 0;
}
입력 받기: printf와 scanf를 사용하여 사용자로부터 점수를 입력받습니다.
switch(score / 10): 점수를 10으로 나누어 해당 범위에 따라 등급을 판단합니다. 예를 들어, 점수가 85라면 score / 10은 8이 되어 case 8이 실행됩니다.
case문: 각 범위에 따라 등급을 출력합니다.
점수가 90 이상이면: case 10, case 9 → "등급: A"
점수가 80 이상이면: case 8 → "등급: B"
점수가 70 이상이면: case 7 → "등급: C"
점수가 60 이상이면: case 6 → "등급: D"
그 외의 점수: default → "등급: F"
break문: 각 case 문이 끝나면 break 문을 사용하여 switch 문을 빠져나갑니다. break 문이 없으면 다음 case 문이 실행될 수 있습니다.
default문: 어떤 case와도 일치하지 않는 경우 실행됩니다.
마지막으로 오늘 배운 문법으로 계산기프로그램을 작성하겠습니다.
switch-case문과 is-else문 두개로 구현해보겠습니다.
else-if문으로 작성
#include <stdio.h>
int main(void) {
char op;
double x, y;
printf("연산자를 입력하세요 (+, -, *, /): ");
scanf(" %c", &op);
printf("첫 번째 숫자를 입력하세요: ");
scanf("%lf", &x);
printf("두 번째 숫자를 입력하세요: ");
scanf("%lf", &y);
if(op=='+') {
printf("%lf + %lf = %lf\n", x, y, x + y);
}
else if(op== '-'){
printf("%lf - %lf = %lf\n", x, y, x - y);
}
else if (op == '*') {
printf("%lf * %lf = %lf\n", x, y, x * y);
}
else if (op == '/') {
if (y = 0)
printf("오류\n");
else
printf("%lf * %lf = %lf\n", x, y, x / y);
}
else printf("지원되지 않는 연산자입니다.\n");
return 0;
}
switch-case문으로작성
#include <stdio.h>
int main(void) {
char op;
double x, y;
printf("연산자를 입력하세요 (+, -, *, /): ");
scanf(" %c", &op);
printf("첫 번째 숫자를 입력하세요: ");
scanf("%lf", &x);
printf("두 번째 숫자를 입력하세요: ");
scanf("%lf", &y);
switch (op) {
case '+':
printf("%lf + %lf = %lf\n", x, y, x + y);
break;
case '-':
printf("%lf - %lf = %lf\n", x, y, x - y);
break;
case '*':
printf("%lf * %lf = %lf\n", x, y, x * y);
break;
case '/':
if (y = 0)
printf("오류\n");
else
printf("%lf * %lf = %lf\n", x, y, x / y);
break;
default: printf("지원되지 않는 연산자입니다.\n");
break;
}
return 0;
}
'IT' 카테고리의 다른 글
c언어 랜덤숫자(rand()함수) (0) | 2025.01.06 |
---|---|
기초컴퓨터프로그래밍 C언어(6)-while, for 반복문 (0) | 2025.01.03 |
스마트그리드란? - 포스터 공모전(1) (1) | 2025.01.02 |
기초컴퓨터프로그래밍 C언어(4)-수식과연산자 (1) | 2024.12.31 |
기초컴퓨터프로그래밍 C언어(3)-기호상수, 진법변환, 데이터형 크기 (1) | 2024.12.30 |