#include<stdio.h>
void main() {
	int i = 1;
	while (i < 51) {
		printf("%d\n", 2 * i);
		i++;
	}
	return;
}
#include<stdio.h>
void main() {
	int i = 1;
	int sum = 0;
	while (i < 11) {
		sum += i;
		i++;
	}
	printf("%d\n", sum);
	return;
}
출력결과 55
#include<stdio.h>
void main() {
	int i = 1;
	int num = 0;
	int sum = 0;
	printf("정수를 입력하세요: ");
	scanf_s("%d", &num);
	while (i <= num) {
		sum += i;
		i++;
	}
	printf("%d\n", sum);
	return;
}
출력결과(2 입력 시) 3
do {
	반복 내용
} while(반복 조건)
반복검사를 뒤에서 한다.
while문은 조건 만족이 안되면 한 번도 실행되지 않지만, do~while문은 조건과 상관없이 반드시 한 번은 반복문 실행
#include<stdio.h>
void main() {
	int i = 0;
	do {
		printf("Programming\n");
		i++;
	} while (i < 5);
	return;
}
#include<stdio.h>
void main() {
	int sum = 0;
	int input = 0;
	do {
		printf("정수를 입력하시오 : \n");
		scanf_s("%d", &input);
		sum += input;
	} while (input != 0);
	
	printf("총 합은 :  %d입니다.\n", sum);
	return;
}
출력결과
정수를 입력하시오 : 2
정수를 입력하시오 : 3
정수를 입력하시오 : 4
정수를 입력하시오 : 5
정수를 입력하시오 : 0
총 합은 : 14입니다.
input != 0을 판별하려면 먼저 input변수에 값이 저장되어야 하는데 그렇게 되기 위해서는 scanf를 통해 사용자로부터 값을 입력받아야 함.
이 경우 while루프의 조건식이 나오기 전에 먼저 사용자로부터 정수값을 받아야한다.
do~while문을 사용하면 사용자로부터 정수를 입력받고 난 다음에 계속 진행 여부를 알 수 있다.
for(초기문; 조건문; 증감문) {
	반복하고자 하는 내용
}
#include<stdio.h>
void main() {
	int i;
	
	for (i = 0; i < 10; i++) {
		printf("Hello World\n");
	}
	return;
}
출력결과
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
#include<stdio.h>
void main() {
	int i;
	for (i = 0; i < 10; i++) {
		printf("*");
	}
	return;
}
출력결과 **********
#include<stdio.h>
void main() {
	int i;
	for (i = 1; i < 13; i++) {
		printf("%d월\n", i);
	}
	return;
}
출력결과
1월
2월
3월
4월
5월
6월
7월
8월
9월
10월
11월
12월
#include<stdio.h>
void main() {
	int i;
	int sum = 0;
	for (i = 1; i < 11; i++) {
		sum += i;
	}
	printf("%d\n", sum);
	return;
}
출력결과 55
#include<stdio.h>
void main() {
	int i;
	int sum = 0;
	int num = 0;
	printf("정수를 입력하세요: ");
	scanf_s("%d", &num);
	for (i = 1; i <= num; i++) {
		sum += i;
	}
	printf("%d\n", sum);
	return;
}
출력결과 (10 입력 시) 55
#include<stdio.h>
void main() {
	int i;
	for (i = 1; i <= 9; i++) {
		printf("2 * %d = %d\n", i, 2 * i);
	}
	return;
}
출력결과
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
단 수를 변수에 담아서 출력하는 방법도 있다.
#include<stdio.h>
void main() {
	int i;
	int dan = 0;
	printf("단을 입력하세요: ");
	scanf_s("%d", &dan);
	for (i = 1; i <= 9; i++) {
		printf("%d * %d = %d\n", dan, i, dan * i);
	}
	return;
}
#include<stdio.h>
#include<Windows.h>
void main() {
	int i;
	for (i = 1; i <= 100; i++) {
		printf("충전: %d\n",  i);
        Sleep(100);
	}
	printf("충전이 완료되었습니다.");
	return;
}
출력결과
충전: 1
충전: 2
...
충전: 100
충전이 완료되었습니다.
Sleep()
CPU를 () 시간만큼 일시중지하는 것 = 제어권을 뺏음
100 = 0.1초
#include<Windows.h> 필요
#include<stdio.h>
void main() {
	int dan = 0;
	int i = 2;
	for (dan = 2; dan <= 9; dan++) {
		for (i = 1; i <= 9; i++) {
			printf("%d ", dan * i);
		}
		printf("\n");
	}
	return;
}
출력결과
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
#include<stdio.h>
int main() {
	int i = 0;
    while (1) {
    	printf("Programming\n");
        i++
    }
    return 0;
}
사실 무한루프는 우리가 컴퓨터를 사용하면서 자동으로 접하고 있는 개념인데, 프로그램은 입력장치의 신호를 대기하며 계속해서 무한루프를 하고있다.
윈도우 프로그램의 종료버튼을 누르게 되면WM_QUIT라는 메세지를 보내게 되면서 무한루프가 종료된다.
while(1) {
	...
    if (a > 100)
    break;
    ...
}
printf("a는 100보다 크다.");
반복문 while 내부에서 특정 조건이 되면 break문을 만나게 되는데, 이 때 break문은 수행중인 반복문 while문을 빠져나가게 한다.
void main() {
	int a = 0;
	while (1) { //true
		if (a > 100) {
			break;
		}
		printf("a의 값은 %d이다.\n", a);
		a++;
	}
	printf("a는 100보다 크다.\n");
}
출력결과
a의 값은 1이다.
a의 값은 2이다.
...
a의 값은 100이다.
a는 100보다 크다.
while(a < 100) {
	...
    if( a > 80 && a > 90) 
    continue;
    ...
}
printf("a는 100보다 크다.");
반복문 while문 내부에서 특정 조건이 되면 continue문을 만나게 되는데, 이 때 continue문 이하의 수행은 무시하고, 다시 반복의 시작점으로 간다.
void main() {
	int a = 0;
	while (a < 100) {
		
		a++;
		if (a > 80 && a < 90) {
			continue;
		}
	}
	printf("a의 값은 %d이다.\n", a);
}
출력결과
a의 값은 1이다.
...
80보다 크고 90보다 작은 값 출력 생략
...
a의 값은 100이다.
void main() {
	int dan = 0;
	int i = 2;
	for (dan = 2; dan <= 9; dan++) {
		if (dan % 2 == 1) continue;
		for (i = 1; i <= 9; i++) {
			printf("%d ", dan * i);
		}
		printf("\n");
	}
	return;
}
출력결과
2 4 6 8 10 12 14 16 18
4 8 12 16 20 24 28 32 36
6 12 18 24 30 36 42 48 54
8 16 24 32 40 48 56 64 72
일반적인 수학에서의 함수의 개념
y = f(x)
y = 2x
함수는 나누어서 처리하기 위한 목적
코드의 가독성이 좋아진다.
코드의 유지 보수 및 확장이 용이해진다.
C언어에서의 함수 동작 개념
C언어는 함수의 덩어리라고 할 정도로 함수의 집합체이다.
함수들이 서로 연동하여 유기적으로 동작하는 것
표준함수
가장 대표적인 함수가 printf 함수이다.
C언어에서 제공해주는 기본 함수들을 표준함수라고 한다.
함수를 라이브러리화 시켜서 편리하게 사용할 수 있게 함.
사용자 정의 함수
표준함수의 기능에는 한계가 있다.
사용자가 자신이 원하는 기능을 직접 만들 수 있는데, 바로 사용자 정의 함수이다.
정형화된 장난감과 레고와 같은 가변적인 장난감의 차이
자료형 함수이름(인수목록) {
	함수의 내용
}
int Plus(int a, int b) {
	return a + b;
}
void main() {
	
	int i = 0;
	int j = 0;
	int hap = 0;
	
	printf("두 개의 정수를 입력하세요 : ");
	scanf_s("%d%d", &i, &j);
	hap = Plus(i, j);
	printf("두 정수의 합은 %d입니다.\n", hap);
}
리턴타입 int 이름이 Plus인 함수
i와 a는 다른 메모리. 값만 복사가 되는 것이다.
"Call by Value 값에 의한 복사"
main 함수 다음 라인으로 Plus 함수를 작성했을 때 main 함수 전에
int Plus(int a, int b);(프로토타입, 함수원형)을 지정해주면 오류를 내지 않고 작동함.
프로토타입을 모아서 헤더파일을 만듦.
#include<stdio.h>
int Plus(int a, int b); // 함수의 원형
void print_Start();
void print_Hap(int result);
void main() {
	
	int i = 0;
	int j = 0;
	int hap = 0;
	
	print_Start();
	scanf_s("%d%d", &i, &j);
	hap = Plus(i, j); // 함수의 호출
	print_Hap(hap);
}
int Plus(int a, int b) { // 함수의 정의
	return a + b;
}
// i와  a는 다른 메모리. 값만 복사가 되는 것이다!
void print_Start() {
	printf("====Programming====\n");
	printf("두 개의 정수를 입력하세요 : ");
}
void print_Hap(int result) {
	printf("두 정수의 합은 %d입니다.\n", result);
	printf("====Programming End====");
}
출력결과
====Programming====
두 개의 정수를 입력하세요 : 2 5
두 정수의 합은 7입니다.
====Programming End====
int Test(int a);
void main() {
	int a = 5;
	int result = 0;
	result = Test(a);
	printf("결과값 : %d", result);
}
int Test(int a) {
	return 2 * a;
}
출력결과 결과값 : 10
