If문
- 단순 if
: () 안에 있는 조건식이 참이면 주어진 문장을 수행하고, 거짓이면 수행하지 않는다.
if (조건식){
문장;
문장;
...
}
: 실행해야 할 문장이 여러개일 경우 { }(중괄호)로 묶음
→ 묶지 않으면 첫 문장만 if문 속으로 포함됨
Ex.
if (num<0)
printf("음수입니다.");
▶ num이 음수라면 '음수입니다.' 문구 출력
퀴즈 결과를 출력하는 프로그램을 작성해보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void){
int score;
printf("퀴즈 점수를 입력하세요: ");
scanf("%d", &score);
if (score<70)
printf("재시!\n");
printf("다음 수업은 일주일 후입니다.\n");
return 0;
}
▶ 사용자가 입력한 점수가 70점 미만일 경우 '재시!'를 출력
- if else
if (조건식){
문장1;
문장2;
...
}
else {
문장3;
문장4;
...
}
▶ 조건식이 참인 경우 문장1, 2 실행, 거짓일 경우 문장3, 4 실행
: 조건 연산자와 함께 사용할 수 있음
Ex.
if (num<0)
printf("음수입니다.");
else
printf("양수입니다.");
▶ num이 0 미만이면 '음수입니다.' 이에 해당되지 않는다면 '양수입니다.'를 출력
int max = (x>y) ? x : y;
▶ (조건)? 참 : 거짓
▶ 'x가 y보다 크다.' 조건이 참이면 max값으로 x를 출력, 그렇지 않으면 y를 출력
→ if / else 구문을 사용해 표현하면 아래와 같음
int max;
if (x>y)
max = x;
else
max = y;
Ex 1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void){
int score;
printf("퀴즈 점수를 입력하세요: ");
scanf("%d", &score);
if (score<70)
printf("재시!\n");
else
printf("통과!\n");
return 0;
}
▶ 사용자가 입력한 퀴즈 점수가 70점 미만이면 '재시!' 그렇지 않으면 '통과!' 출력
Ex 2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int x, y;
printf("정수 2개를 입력하세요: ");
scanf("%d%d", &x, &y);
if (y != 0)
printf("%d / %d = %f\n", x, y, (double)x / y);
else
printf("0으로 나눌 수 없습니다.\n");
return 0;
}
▶ 사용자가 입력한 정수 2개를 나눌 때, 나누는 수가 0이 아닐 경우 소수점 이하까지 나눈 값을 출력하고, 0일 경우 '0으로 나눌 수 없습니다.'를 출력
Ex 3.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void) {
int k, e;
double avg;
printf("국어 점수를 입력하세요: ");
scanf("%d", &k);
printf("영어 점수를 입력하세요: ");
scanf("%d", &e);
avg = (double)(k + e) / 2;
printf("평균 점수는 %.2f\n", avg);
if (avg >= 80 && k >= 70 && e >= 70)
printf("합격\n");
else
printf("불합격\n");
return 0;
}
▶ 사용자에게 국어 점수와 영어 점수를 입력받은 뒤 평균 값을 구함
: 평균값은 (국어 점수 + 영어점수)/2를 실수형으로 형변환 시킴
▶ 평균이 80이상이고 국어 점수와 영어 점수가 70점 이상인 경우에는 '합격' 그렇지 않은 경우에는 '불합격' 출력
- 중첩된 if
: if문 안에 포함된 if문
Ex.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int age, fee;
printf("나이? ");
scanf("%d", &age);
if (age >= 8) {
if (age >= 65) {
fee = 5000;
}
else {
fee = 10000;
}
}
else {
fee = 0;
}
printf("입장료 : %d원\n", fee);
return 0;
}
▶ 사용자가 입력한 나이가 8세 이상이면 유료, 8세 미만이면 무료
→ 65세 이상은 5000원, 그 이하는 10000원을 출력
- if ~ else if
: else 블록 안에 다른 문장 없이 또 다른 if문만 들어있을 때, else if로 작성할 수 있음
→ else if문은 여러가지 중에서 한 가지를 선택할 때 유용함
if (조건식1)
문장 1;
else if (조건식2)
문장2;
else
문장3;
Ex 1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int age, fee;
printf("나이? ");
scanf("%d", &age);
if (age < 8) {
fee = 0;
}
else if (age >= 65) {
fee = 5000;
}
else {
fee = 10000;
}
printf("입장료 : %d원\n", fee);
return 0;
}
▶ 위에서 사용했던 예제를 else if문으로 다르게 표현함
Ex 2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int a, b;
char op;
printf("수식? ");
scanf("%d %c %d", &a, &op, &b);
if (op == '+') {
printf("%d + %d = %d\n", a, b, a + b);
}
else if (op == '-') {
printf("%d - %d = %d\n", a, b, a - b);
}
else if (op == '*') {
printf("%d * %d = %d\n", a, b, a * b);
}
else if (op == '/') {
if (b != 0)
printf("%d / %d = %.2f\n", a, b, (double)a / b);
printf("0으로 나눌 수 없습니다.\n");
}
else {
printf("잘못된 수식입니다.\n");
}
return 0;
}
▶ 수식 연산자 +, -, *, /를 이용해 계산하는 사칙연산 프로그램
▶ / 연산자의 경우 소수점 둘 째자리 까지만 출력되도록 함
▶ 사용자가 입력한 두 값을 나눴을 때 0이 나오면 '0으로 나눌 수 없습니다.' 출력
▶ 이미 정해진 수식 연산자(+, -, *, /) 외에 다른 연산자를 입력하면 '잘못된 수식입니다.' 출력
Ex 3.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void) {
int n;
scanf("%d", &n);
if (n == 5)
printf("5");
else if (n == 7)
printf("%d", n * n);
else if (n == 9)
printf("%d", n);
else
printf("그 외 값");
return 0;
}
▶ 사용자가 입력한 값이 5, 7, 9일 경우에는 각각 5, 7의 제곱값, 9를 출력하지만 다른 수를 입력할 경우 '그 외 값' 출력
Ex 4.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void) {
int num;
scanf("%d", &num);
if (num % 2 == 0)
printf("짝수");
else if (num % 2 == 1)
printf("홀수");
return 0;
}
▶ 사용자가 입력한 값이 2로 나눠 떨어지면 '짝수', 그렇지 않으면 '홀수' 출력
- switch
: 식의 결과가 문자형 또는 정수형일 때 그 값에 따라 case의 값과 일치하는 부분의 문장들을 수행하는 선택 구문
→ 식 또는 변수는 정수(문자) 결과가 나오는 것만 사용 가능
→ switch 안에서 break를 만나면 switch를 탈출
→ case 뒤에는 상수(정수)값만 가능
→ case에서 순서를 구분할 필요는 없음
≫ 일치하는 case가 없을 때 수행할 문장은 default 다음에 써줌
switch(식 또는 변수){
case 값1:
명령;
명령;
...
break;
case 값2:
명령;
명령;
...
break;
...
[default:
명령;
명령;
...
break;]
}
★ 주의사항 ★
- switch문에서 break는 생략할 수 있음
: 특정 case에 대한 break를 생략하면 break나 switch의 끝( } )을 만날 때까지 연속된 case의 문장들을 모두 수행
→ switch문이 올바르게 수행되도록 하려면 case마다 break를 써주어야 하며, default에도 break를 써주는 것이 좋음
- switch문에서 default도 생략할 수 있음
: switch의 정수식과 값이 일치하는 case가 없고 default도 없으면, 바로 switch를 빠져나감
→ default는 보통 switch문의 끝부분에 써줌
Ex 1.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void) {
int n;
scanf("%d", &n);
switch (n) {
case 5:
printf("5이다.");
break;
case 7:
printf("%d\n", n * n * n);
break;
case 9:
printf("%d\n",n * n);
break;
default:
printf("해당 없음");
break;
}
return 0;
}
▶ 사용자가 입력한 값이 5이면 '5이다', 7이면 7의 세제곱값, 9이면 9의 제곱값, 다른 값을 입력하면 '해당 없음' 출력
'Language > C' 카테고리의 다른 글
[ C ] [ if 조건문 연습 문제 ] 실수 입력 프로그램 (0) | 2021.10.11 |
---|---|
[ C ] [ if 조건문 연습 문제 ] 정수 입력 프로그램 (0) | 2021.10.11 |
[ C ] [ 반복문 연습 문제 ] 음수 입력 중단 프로그램 (0) | 2021.10.08 |
[ C ] [ 연산자 연습 문제 ] 승 출력 프로그램 (0) | 2021.10.05 |
[ C ] [ 연산자 연습 문제 ] 운동 에너지 구하기 프로그램 (0) | 2021.10.05 |