포스트

C언어 공부 3

반복문, 연산자를 배운다

C언어 공부 3

반복문

코딩을 하다보면 반복되는것을 써야 되는 경우가 있다. 이럴 때 반복문을 사용해서 해결이 가능하다.

연산자

+-X/ 등을 연산자라 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>

int main(void) {
	// ++연산자(Operator) : 변수에 1을 더하는 연산자, while 같은 반복구문에서 쓰인다.
	// a++; 이것은 a 변수에 1을 더한 다음 a에 저장한다는 의미이다.
	int a = 10;
	printf("a는 %d\n", a);
	a = a + 1;
	printf("a는 %d\n", a);
	a++;
	printf("a는 %d\n", a);

	int b = 20;
	printf("b는 %d\n", ++b); // 변수 앞에 ++ 연산자를 쓰면 '전위'라고 하고 1증가 연산 후 출력
	printf("b는 %d\n", b++); // 반대로 '후위' 라고 함. 출력을 먼저 한 담에 1증가.
	printf("b는 %d\n", b);
	return 0;
	// = 대입연산자(Operator) : 변수에 값을 대입하는 연산자
	// + 덧셈연산자(Operator) : 두 수를 더하는 연산자
	// % 나머지연산자(Operator) : 나누기 연산 후 나머지를 구하는 연산자
	// - 뺄셈연산자(Operator) : 두 수를 빼는 연산자
	// 연산자는 이외에도 *,/ 도 있다.
	// ++와 같은 것이 += 이다. a += 1; a += 2; a += 3; 이런식으로 증감을 1 이상할 수 있다.
	// ++, -- 와 같이 1씩 변화시키는 연산자를 증감 연산자 라고 한다.
}

// 연산자의 종류
// 1. 산술연산자 : +, -, *, /, %, ++, --
// 2. 비교연산자(관계연산자) : >, <, >=, <=, ==, !=
// 3. 논리연산자 : &&(AND), ||(OR), !(NOT)
// 4. 대입연산자 : =, +=, -=, *=, /=, %=, (<<=, >>=, &=, |=, ^=)
// (  비트연산자 : &, |, ^, ~, <<, >> )

for 반복문

반복문 안에 선언, 조건, 연산이 다 들어가 있다. 간단하게 정리 가능.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
//
//int main(void) {
//	//for(선언;조건;증감){수행할 문장}
//	for (int i = 1; i <= 10; i++) {
//		// integer data type declaration, i = 1 초기화 영어로 initialization
//		// i <= 10 조건 영어로 condition, i++ 증감 영어로 increment
//		// 수행할 문장 영어로 statement
//		printf("안녕 세상아! %d\n", i);
//		//선언 및 초기화 -> 조건확인 -> 참이면 문장수행 -> 증감 수행 -> 조건확인 -> 참이면 문장수행 -> 증감 수행 -> 조건확인 -> 거짓이면 반복문 종료
//		}
//	
//
//	return 0;
//}

while 반복문

반복문 전에 선언을 먼저 해야한다. 만약 조건이 거짓이면 반복문은 한번도 수행되지 않는다.

1
2
3
4
5
6
7
8
9
////선언;	while(조건){수행할 문장} !! 조건이 거짓이면 한번도 수행하지 않는다.
//int main(void) {
//	int i = 1;
//	while (i <= 10) {
//		printf("안녕 세상아! %d\n", i++);
//		//i++;
//	}
//	return 0;
//}

do-while 반복문

while과 똑같이 선언은 반복문 전에 해야 한다. while과 다르게 조건이 어떻게 되든 무조건 한 번은 수행한다. while(조건) 뒤에 꼭 ; 를 써줘야한다. 잊지말자.

1
2
3
4
5
6
7
8
9
10
11
// do-while 문 !! 무조건 한번은 수행한다.
// 선언; do{수행할 문장} while(조건);
int main(void) {
	int i = 1;
	do {
		printf("안녕 세상아! %d\n", i);
		i++;
	} while (i <= 10);
	return 0;
}
// 무한 반복에 빠졋을 시, ctrl + c로 강제종료

이중 반복문 (다중 반복문)

반복문 안에 반복문을 넣어서 수행이 가능하다

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main(void) {
	for (int i = 1; i <= 3; i++) {
		printf("첫 번째 반복문 : %d\n", i);
		for (int j = 1; j <= 5; j++) {
			printf("	두 번째 반복문 : %d\n", j);
		}
	}
	return 0;
}

구구단 구현하기

이중 반복문을 통해 간단하게 구구단 전체 테이블을 출력할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void) {
	int i, j;
	i = 2;
	do {
		printf("----- %d단 -----\n", i);
		j = 1;
		do {
			printf("%d X %d = %d\n", i, j, i * j);
			j++;
		} while (j <= 9);
		i++;
	} while (i <= 9);
	return 0;

}

순차적으로 별표 출력하기

반복문으로 다음과 같이 별표를 출력해보자

Desktop View

출력하는 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void) {
	int i = 0;
	int j;
	while (i <= 4) {
		j = i;
		while (j >= 0) {
			printf("☆");
			j--;
		}
		printf("\n");
		i++;
	}
return 0;
}

오른쪽 정렬로 별 출력하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main(void) {
		for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 4 - i; j++) {
			printf(" ");
		}
		for (int j = 0; j <= i; j++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

왜 반복문 에서 변수를 0으로 초기화 하고 시작할까?
그이유는 배열때문. 배열은 인덱스를 통해 접근 가능. 배열의 인덱스는 0 부터 시작한다.
배열의 모든 값에 접근하기 위해서는 0부터 시작해서 증감해야 하기 때문이다.
6장에서 자세히 다룸.

프로젝트 (피라미드 쌓기)

원하는 층 수를 입력받고, 층수만큼 피라미드를 쌓자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>

int main(void) {
	int floor;
	printf("몇 층을 쌓을까요? : ");
	scanf_s("%d", &floor);
	printf("출력합니다 :\n---------------------------\n");
	for (int i = 0; i < floor; i ++) {
		for (int j = i; j < floor; j++) {
			printf(" ");
		}
		for (int j = 0; j < i*2+1; j++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

// 짝수 2n, 홀수 2n+1 을 이용

Desktop View

역순으로 별 출력

이번에는 반대로 첫 줄이 한 개가 아닌, 첫 줄이 5개인 별을 출력해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main(void) {
	for (int i = 5; i > 0; i--) {
		for (int j = i; j < 5; j++) {
			printf(" ");
		}
		for (int j = 0; j < i; j++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.