💡연산자
📌 연산자
- 정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는 것.
- 예를 들어 학생들 과목당 성적 데이터는 그 자체로 의미가 없다.
- 총점 및 평균을 데이터화해야 그 의미가 있다.
- ex) 산술 연산자, 대입 연산자, 부호 연산자, 증감 연산자, 관계 연산자, 논리 연산자, 비트 연산자
📌 산술 연산자
- 사칙 연산이 기본이다.
- 일상에서 많이 사용하기 때문에 이해하는데 어려움이 없다.
- 실습 예제
#include <stdio.h>
int main()
{
int a = 5;
int b = 3;
printf("두 수의 합은 %d 입니다.\n", a + b);
printf("두 수의 차는 %d 입니다.\n", a - b);
printf("두 수의 곱은 %d 입니다.\n", a * b);
printf("두 수를 나누기는 %d 입니다.\n", a / b);
printf("두 수의 나머지는 %d 입니다.\n", a % b);
return 0;
}

📌 대입 연산자
- 대입 연산자는 오른쪽에 있는 값을 왼쪽에 대입하는 역할을 한다.
- 대입 연산자와 산술 연산자를 혼용해서 사용하기도 한다.
- 실습 예제
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 3;
a += b;
printf("a += b의 결과는 %d 입니다.\n", a);
a -= b;
printf("a -= b의 결과는 %d 입니다.\n", a);
a *= b;
printf("a *= b의 결과는 %d 입니다.\n", a);
a /= b;
printf("a /= b의 결과는 %d 입니다.\n", a);
a %= b;
printf("a %%= b의 결과는 %d 입니다.\n", a);
return 0;
}
📌 증감 연산자
- 증감 연산자는 증가 연산자와 감소 연산자의 줄임말이다.
- 실습 예제
#include <stdio.h>
int main(void)
{
int a;
int b;
a = 5;
printf("++a의 처리 결과 : %d\n", ++a);
a = 5;
printf("a++의 처리 결과 : %d\n", a++);
printf("a를 다시 출력 : %d\n\n", a);
b = 10;
printf("--b의 처리 결과 : %d\n", --b);
b = 10;
printf("b--의 처리 결과 : %d\n", b--);
printf("b를 다시 출력 : %d\n", b);
return 0;
}

📌 관계 연산자
- 관계 연산자는 두 개의 피연산자로 관계를 따지는 연산자로, 같은지 다른지 어느쪽이 큰지 작은지 비교하는 연산자이다.
- boolean 값을 return 함 (true or false)
- 실습 예제
#include <stdio.h>
void main(void)
{
int a = 10;
int b = 11;
int c = 12;
int d = 10;
printf("a == b의 결과는 : %d\n", a == b);
printf("a < b의 결과는 : %d\n", a < b);
printf("a >= c의 결과는 : %d\n", a >= c);
printf("a == d의 결과는 : %d\n", a == d);
}

📌 논리 연산자
- 두 개의 조건식 등을 결합하여 하나의 결과값을 만들어낸다.
! : 피연산자의 결과를 모두 반대로 만든다. 피연산자가 true이면 false를 리턴하고, 피연산자가 false이면 true를 리턴한다.
&& : 피연산자가 모두 참이어야만 true를 리턴한다.
|| : 피연산자 둘 중에 하나가 참이어도 true를 리턴함 (둘 다 거짓이어야만 false임.)
📌 평가 문제
- 사용자로부터 3개의 정수를 입력받아서, 3개의 수를 곱한 결과를 출력하라.
출력 예)
세 개의 정수를 입력하세요 : 2 3 4
세 수의 곱은 24입니다.
#include <stdio.h>
void main(void)
{
int a;
int b;
int c;
scanf("%d %d %d", &a, &b, &c);
printf("세 수의 곱은 %d입니다.", a *b * c);
}
- 사용자로부터 3개의 정수를 입력받는다. 입력한 세 정수의 합과 평균을 출력하는 프로그램을 작성하라.
#include <stdio.h>
void main(void)
{
int a;
int b;
int c;
scanf("%d %d %d", &a, &b, &c);
int sum = a + b + c;
double avg = sum / 3;
printf("세 수의 합 : %d\n", sum);
printf("세 수의 평균 : %f\n", avg);
}
💡분기문 (if문)
📌 조건이란
- 어떤 의미를 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요소.
📌 if문
- 만약에 …라면
- 가정법
- 아직 일어나지 않은 상황을 가정해서 그 상황에 대한 처리를 미리 구현을 하는 것
📌 if문 기본 원리
if (수행 조건)
{
수행하고 싶은 일
}
#include <stdio.h>
int main(void)
{
int a;
printf("정수를 입력하세요 : ");
scanf("%d", &a);
if (a > 5) {
printf("입력 값은 5보다 큽니다.\n");
}
return 0;
}

- 순서도

- 실습 예제
#include <stdio.h>
int main(void)
{
int a;
printf("정수를 입력하세요 : ");
scanf("%d", &a);
if (a > 5) {
printf("입력 값은 5보다 큽니다.\n");
}
if (a < 5) {
printf("입력 값은 5보다 작습니다.\n");
}
if (a == 5) {
printf("입력 값은 5와 같습니다.\n");
}
return 0;
}

💡분기문 (if-else 문)
📌 if ~ else문
- else 문은 ‘그 밖의’라는 의미를 가지고 있다.
- else 문을 추가함으로써 이것만 선택할 수 있는 것이 아니라 저것도 선택이 가능하다.
- 양자 택일의 형태이다.
if (수행 조건)
{
수행 조건 만족 시 수행
}
else
{
수행 조건 불만족 시 수행
}
#include <stdio.h>
int main(void)
{
int a;
printf("정수를 입력하세요 : ");
scanf("%d", &a);
if (a > 5) {
printf("입력 값은 5보다 큽니다.\n");
} else {
printf("입력 값은 5보다 크지 않습니다.")
}
return 0;
}
- 순서도

📌 평가 문제
- 사용자로부터 하나의 정수를 입력 받는다. 입력한 값이 짝수이면 출력 결과로 “입력한 수는 짝수입니다.”라는 문자열을 출력하고, 입력한 값이 홀수이면 출력 결과로 “입력한 수는 홀수입니다.”라는 문자열을 출력하라.
#include <stdio.h>
int main()
{
int input;
scanf("%d", &input);
if (input % 2 == 0) {
printf("입력한 수는 짝수입니다.");
} else {
printf("입력한 수는 홀수입니다.");
}
return 0;
}
- 사용자로부터 세 개의 정수를 입력받는다. 입력받은 세 개의 정수를 비교하여 그 중 가장 작은 최소값을 출력하는 프로그램을 작성하라.
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a < b && a< c)
printf("최소값 : %d", a);
else {
if (b < c && b < a)
printf("최소값 : %d", b);
else
printf("최소값 : %d", c);
}
return 0;
}
💡분기문 (if - else if 문)
📌 if ~ else if ~ else 문
- 인생은 양자택일만 있는 것이 아니다.
else if문을 사용하면 조건 자체가 계속 늘어날 수 있다.
if ~ else if ~ else문의 기본 원리
if (수행 조건1) {
수행 조건1 만족 시 수행
} else if (수행 조건2) {
수행 조건2 만족 시 수행
} else {
수행 조건1, 수행 조건2 불만족시 수행
}
#include <stdio.h>
int main(void)
{
int a;
printf("정수를 입력하세요 : ");
scanf("%d", &a);
if (a > 5) {
printf("입력 값은 5보다 큽니다.\n");
} else if (a < 5) {
printf("입력값은 5보다 작습니다.\n");
} else {
printf("입력값은 5와 같습니다.\n");
}
return 0;
}
- 순서도

📌 평가 문제
- 사용자로부터 점수값을 입력받는다. 점수값은 정수이다. 점수값이 60점 이상이면 “합격입니다.”를 출력하고, 60점 미만이면 “불학겹입니다.”를 출력하라.
#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
if (score >= 60) {
printf("합격입니다.\n");
} else {
printf("불합격입니다.\n");
}
return 0;
}
- 사용자로부터 점수값을 입력받는다. 점수값은 정수이다. 점수값이 60점 이상이면 “합격입니다.”를 출력하고, 60점 미만이면 “불학겹입니다.”를 출력하라. 단, 합격자 중에 90점 이상이면 추가로 “장학 대상입니다.”를 출력하도록 한다.
int main()
{
int score;
scanf("%d", &score);
if (score >= 60) {
printf("합격입니다.\n");
if (score >= 90) {
printf("장학대상입니다.\n");
}
} else {
printf("불합격입니다.\n");
}
return 0;
}
- 사용자로부터 나이를 입력받는다. 나이는 정수이다. 나이의 값이 13세 미만이면 “어린이입니다.”를 출력하고, 13세 이상 19세 미만이면 “청소년입니다.”를 19세 이상이면 “성인입니다.”를 출력하라.
int main()
{
int age;
scanf("%d", &age);
if (age < 13) {
printf("어린이입니다.\n");
} else if (age >= 13 && age < 19) {
printf("청소년입니다.\n");
} else {
printf("성인입니다.\n");
}
return 0;
}
- 사용자로부터 char형으로 문자 한 개를 입력받는다. 문자는 ‘y’ 또는 ‘n’ 둘 중에 하나의 문자를 입력한다. 만약 입력한 값이 ‘y’라면 “네, 드라이브를 포멧하겠습니다.”를 출력하고, 입력한 값이 ‘n’이라면 “아니오, 드라이브를 포멧하겠습니다.”를 출력하시오.
출력 예)
정말로 이 드라이브를 포멧하시겠습니까? (y/n) y
네, 드라이브를 포멧하겠습니다.
#include <stdio.h>
int main()
{
char ch;
printf("정말로 이 드라이브를 포멧하시겠습니까?(y/n)");
scanf("%c", &ch);
if (ch == 'y') {
printf("네, 드라이브를 포멧하겠습니다.\n");
} else if (ch == 'n') {
printf("아니오, 드라이브를 포멧하겠습니다.\n");
}
return 0;
}
- 사용자로부터 성적 점수인 정수 값을 한 개 입력 받아 그 값에 대한 점을 표시하는 프로그램을 작성하라. 예를 들어 100~91점은 A학점, 90~81점은 B학점, 80-71점은 C학점, 70~61점은 D학점, 60점 이하는 F 학점으로 표시한다. 단, 입력하는 수의 범위는 0부터 100 사이다. (참고, 관계 연산자의 대소 비교 시 '크거나 같다' 혹은 '작거나 같다'와 같은 연산자는 '<=', '>='로 사용된다. 그리고, 두 조건을 모두 만족해야 하는 AND 연산자는 '&&' 이다.)
출력 예)
점수를 입력하시오 : 95
학점은 A입니다.
int main()
{
int score;
printf("점수를 입력하시오 : ");
scanf("%d", &score);
if (score >= 91 && score <= 100) {
printf("학점은 A입니다.\n");
} else if (score >= 81 && score <= 90) {
printf("학점은 B입니다.\n");
} else if (score >= 71 && score <= 80) {
printf("학점은 C입니다.\n");
} else if (score >= 61 && score <= 70) {
printf("학점은 D입니다.\n");
} else {
printf("학점은 F입니다.\n");
}
return 0;
}
💡반복문 (while문)
📌 while문의 기본 원리
while (반복 조건) {
반복 문장
}
- 반복 조건을 만족하는 동안 반복 문장을 수행한다.
- 반복 조건을 만족하지 않으면
while문을 빠져나간다.
- 실습 예제
#include <stdio.h>
void main()
{
int i = 0;
while (i < 5) {
printf("Programming\n");
i++;
}
}

📌 평가 문제
- 반복문을 사용하여 1월부터 12월까지 출력하라.
출력 예)
1월
2월
3월
4월
...
12월
#include <stdio.h>
void main()
{
int i = 1;
while (i <= 12) {
printf("%d월\n", i);
i++;
}
}
📌 while문의 기본 원리
- 반복문의 대표적인 예제가 구구단이다.
- 구구단 2단의 반복되는 포인트를 살펴보자.
- 단수와 곱해지는 수를 반복문으로 처리하면 된다.
- 실습 예제
#include <stdio.h>
void main()
{
int i = 1;
while (i <= 9) {
printf("2 X %d = %d\n", i, 2 * i);
i++;
}
}

📌 평가 문제
- 사용자로부터 입력받은 숫자에 해당하는 구구단을 출력하시오. (사용자 입력 함수인 scanf를 사용하여 사용자로부터 정수를 입력받으시오.)
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int i = 1;
while (i <= 9) {
printf("%d X %d = %d\n", n, i, n * i);
i++;
}
return 0;
}
- 반복문을 사용하여 1부터 10까지의 합을 출력하라.
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
while (i <= 10) {
sum += i;
i++;
}
printf("sum = %d\n", sum);
return 0;
}
- 반복문을 사용하여 1부터 사용자가 입력한 정수까지의 합을 출력하는 프로그램을 작성하라.
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int n;
scanf("%d", &n);
while (i <= n) {
sum += i;
i++;
}
printf("sum = %d\n", sum);
return 0;
}
- 배터리를 충전중이다. 1부터 100까지 충전해야 하는데, 현재 충전양을 표시하고, 100이 넘어가면 “충전이 완료되었습니다.”라고 출력하자.
출력 예)
충전 : 1
충전 : 2
충전 : 3
…..
충전 : 100
충전이 완료되었습니다.
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int n;
while (i <= 100) {
printf("충전 : %d\n", i);
i++;
}
printf("충전이 완료되었습니다.\n");
return 0;
}
💡반복문 (이중 while문)
📌 이중 while문
- 구구단 2단부터 9단까지 출력하시오.
- 이중 반복문을 사용해야 한다.
- 반복 빈도가 높은 부분 : 단수와 곱해지는 수
- 반복 빈도가 낮은 부분 : 단수
- 지구의 공전과 자전의 원리와 비슷하다.
- 사용 형태
while (expression1)
{
while (expression2)
{
....
}
}
#include <stdio.h>
int main()
{
int dan = 2;
while (dan < 10) {
int i = 1;
while (i < 10) {
printf("%d X %d = %d\n", dan, i, dan * i);
i++;
}
dan++;
}
return 0;
}
📌 평가 문제
- 다음과 같이 출력하도록 프로그램을 작성하되 반드시 이중 while문을 사용하여 작성하여 보자.
*
**
***
****
*****
int main()
{
int i = 0, j = 0;
while (i < 5) {
j = 0;
while (j <= i) {
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}
💡반복문 (무한 루프)
📌 무한 루프
- 무한 루프란 반복 수행이 무한이 일어난다는 것
- 반복 조건이 어느 시점에 무너질 수 있도록 설계
- 무한 루프 안에서 어느 시점에
break나 return으로 빠져나올 수 있어야 함.
#include <stdio.h>
int main()
{
int i = 0;
while (1) {
printf("Programming\n");
i++;
}
return 0;
}
💡반복문 (for문)
📌 for문의 기본 원리
- for문은 while문과 다르게 변수의 초기화 연산과 증감 연산이 추가된다.
for (초기문; 조건문; 증감문)
{
반복하고자 하는 내용
}
- (초기문 →) 1 조건문 → 2 반복하고자 하는 내용 → 3 증감문
- 1, 2, 3 계속 반복
- while 문과의 비교 : while문은 괄호 안에 조건문만 있음. 초기문과 증감문은 while문의 위쪽과 안쪽에서 사용
#include <stdio.h>
int main()
{
int dan, i;
printf("단을 입력하시오 : ");
scanf("%d", &dan);
for (i = 1; i < 10; i++) {
printf("%d X %d = %d\n", dan, i, dan * i);
}
return 0;
}