728x90
제어문
- 조건문 : 주어진 조건에 따라 어떤 일을 할 것인지 결정
- 반복문 : 주어진 조건에 따라 몇 번 할 것인지 결정
조건문
: 주어진 조건에 따라 특별한 작업 수행
3가지 제어구조
[순차구조, 선택구조, 반복구조]
if 문
if(조건식) {
실행문 // 조건식이 참인 경우 실행
}
if(number > 0)
printf("양수입니다.\n");
if-else 문
if(조건식) {
실행문1 // 조건식이 참인 경우 실행
}
else
{
실행문2 // 조건식이 거짓인 경우 실행
}
if(조건식1) {
실행문1 // 조건식1이 참인 경우 실행
}
else if(조건식2)
{
실행문2 // 조건식2가 참인 경우 실행
}
...
else
{
실행문n // 앞의 모든 조건이 거짓인 경우 실행
}
💡 if-else 매칭
: else 절은 가장 가까운 if 절과 매칭된다.
if 문 Flow Chart
if (a > b) {
printf("a가 크다");
}
if (a > b)
{
printf(" a가 크다");
}
else
{
printf(" a가 크지 않다");
}
if (a > b)
{
printf(" a가 크다");
}
else if (a < b)
{
printf(" b가 크다');
}
else
printf(" a와 b는 같다");
조건문의 비교/논리 연산자
if((ch == ' ') || (ch == '\n') || (ch == '\t'))
white_space++;
💡 조건 연산자 ← chapter05 포스팅 확인!
condition ? expT : expF;
- 정수값 판단 프로그램
#include <stdio.h>
int main(void)
{
int num, sign;
printf("정수값을 입력하시오. : ");
scanf("%d", &num);
if (num > 0) {
sign = 1;
}
else {
sign = -1;
}
if (num % 2 == 0) {
if (num == 0) {
printf("0은 홀수도 짝수도 아닙니다.\n");
}
else {
printf("%d은(는) %s이자 짝수입니다.\n", num, sign > 0 ? "양수" : "음수");
}
}
else {
printf("%d은(는) %s이자 홀수입니다.\n", num, sign > 0 ? "양수" : "음수");
}
return 0;
}
- 이항 연산 프로그램
#include <stdio.h>
int main(void)
{
int num1, num2, value;
char op;
printf("※ 연산은 이항 연산만 가능합니다. (+ - * / %%)\n");
printf("식을 입력하시오.(ex. 12 + 34) : ");
scanf("%d %c %d", &num1, &op, &num2);
switch (op)
{
case '+':
value = num1 + num2;
break;
case '-':
value = num1 - num2;
break;
case '*':
value = num1 * num2;
break;
case '/':
value = num1 / num2;
break;
case '%':
value = num1 % num2;
break;
default:
printf("\n이항 연산자(+ - * / %%) 중 하나를 입력해주세요.\n");
return 0;
}
printf("\n%d %c %d = %d\n", num1, op, num2, value);
return 0;
}
복합문 (compound statement)
: 중괄호를 사용하여 문장들을 그룹핑하는 것
- 블록(block)이라고도 한다.
- 단일문 대신 들어갈 수 있다.
중첩 if 문
: if 문내에 다시 if 문을 포함
switch-case 문
: 제어식의 값에 따라서 여러 경로 중 하나를 선택할 수 있는 제어 구조
(하나의 변수에 대해 여러 값에 대해 명령을 수행할 때 사용)
switch (제어식)
{
case c1: // 제어식의 값이 c1일 경우 실행
문장1;
break;
case c2: // 제어식의 값이 c2일 경우 실행
문장2;
break;
...
default: // 일치하는 값이 없으면 실행
문장d;
break;
}
- 의도적인 default 문 생략
switch (number)
{
case 0:
printf("없음\n");
break;
case 1:
printf("하나\n");
break;
case 2:
case 3:
printf("둘, 셋\n");
break;
default:
printf("많음\n");
break;
}
📢 case 에서 변수, 실수, 문자열은 사용이 불가하다!
- 학점 계산 프로그램
- if 문 사용
#include <stdio.h>
int main(void)
{
int score;
char grade;
printf("점수를 입력하시오. (100점 만점) : ");
scanf("%d", &score);
if ((score >= 0) && (score <= 100))
{
if (score >= 90)
{
grade = 'A';
}
else if (score >= 80)
{
grade = 'B';
}
else if (score >= 70)
{
grade = 'C';
}
else if (score >= 60)
{
grade = 'D';
}
else
{
grade = 'F';
}
printf("학점은 %c%c 입니다.\n", grade, ((score >= 60) && (score % 10 >= 5)) ? '+' : 0);
}
else
{
printf("0부터 100사이의 점수를 입력해주세요.\n");
}
return 0;
}
- switch-case 문 사용
#include <stdio.h>
int main(void)
{
int score;
char grade;
printf("점수를 입력하시오. (100점 만점) : ");
scanf("%d", &score);
switch (score / 10)
{
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
grade = 'F';
break;
default:
printf("0부터 100사이의 점수를 입력해주세요.\n");
return 0;
}
printf("학점은 %c%c 입니다.\n", grade, ((score >= 60) && (score % 10 >= 5)) ? '+' : 0);
return 0;
}
goto 문
: 조건 없이 어떤 위치로 점프
- 구조적인 프로그램에서는 사용하지 않는 것이 좋다.
└ 순서가 꼬일 수 있어, 권장되지 않음 - 전향 참조
goto label;
...
...
...
label:
문장 #1;
문장 #2;
문장 #3;
- 후향 참조
label:
문장 #1;
문장 #2;
문장 #3;
...
...
...
goto label;
728x90
아래 노션 페이지에 C 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
728x90
'🧑💻 Language > C·C++' 카테고리의 다른 글
[C 이론] 8. 함수 (0) | 2021.05.06 |
---|---|
[C 이론] 7. 반복문 (0) | 2021.05.03 |
[C 이론] 5. 수식과 연산자 (0) | 2021.05.03 |
[C 이론] 4. 변수와 자료형 (0) | 2021.05.03 |
[C 이론] 3. C프로그램 구성요소 (0) | 2021.05.03 |