continue : 고 (계속 한다)break : 스톱 (멈춘다)while문 내부에서 특정 조건이 되면 break를 만나게 되는데, break문은 while문을 빠져나가게 된다.#include <stdio.h>
int main()
{
int a = 0;
while (1) {
if (a > 100) {
break;
}
printf("a의 값은 %d 입니다.\n", a);
a++;
}
printf("a는 100보다 크다\n");
return 0;
}

continue문 이하의 수행은 무시하고, 다시 반복의 시작점으로 간다.#include <stdio.h>
int main()
{
int a = 0;
while (a < 100) {
a++;
if (a > 80 && a < 90) {
continue;
}
printf("a의 값 : %d\n", a);
}
return 0;
}

#include <stdio.h>
int main()
{
int dan = 1;
int i = 1;
while (dan <= 9) {
i = 1;
if (dan % 2 != 0) {
dan++;
continue;
}
while (i <= 9) {
printf("%d X %d = %d\n", dan, i, dan * i);
i++;
}
dan++;
}
return 0;
}
printf 자료형 함수이름(인수목록)
{
함수의 내용
}
#include <stdio.h>
int Add(int a, int b) {
return a + b;
}
int main()
{
int a = 10;
int b = 20;
int sum;
sum = Add(a, b);
printf("%d", sum); // 30 출력
return 0;
}
#include <stdio.h>
int Add(int i, int j);
void print_Start() {
printf("========Programming Start======\n");
printf("두 개의 정수를 입력하시오 : ");
}
void print_Sum(int result) {
printf("두 수의 합은 %d입니다.\n", result);
printf("========Programming End======\n")
}
함수 작성 예)void 함수이름 (int width, int height) {...}void getArea (int width, int height) {
int area = width * height;
printf("사각형의 넓이 : %d\n", area);
}
int main()
{
int w, h;
scanf("%d %d", &w, &h);
getArea(w, h);
return 0;
}

출력 예)두 정수를 입력하시오 : 5 3#include <stdio.h>
int Max(int a, int b) {
if (a >= b)
return a;
else
return b;
}
int Min(int a, int b) {
if (a <= b)
return a;
else
return b;
}
int main()
{
int a, b;
int max, min;
printf("두 정수를 입력하시오 : ");
scanf("%d %d", &a, &b);
max = Max(a, b);
min = Min(a, b);
printf("최대값 : %d, 최소값 : %d\n", max, min);
return 0;
}

함수 작성 예)void 함수 이름 (int price){ if (price == 100) ... else if (price == 200) ...}#include <stdio.h>
void coffeeMachine(int price) {
if (price == 100) {
printf("블랙커피\n");
} else if (price == 200) {
printf("밀크커피\n");
}
}
int main()
{
int price;
scanf("%d", &price);
coffeeMachine(price);
return 0;
}
#include <stdio.h>
int global; // 전역 변수
void func1() {
int local = 10; // 지역 변수
}
void main(void) {
int val = 0; // 지역 변수
func1();
}
#include <stdio.h>
int global;
void Add(int i, int j) {
global = i + j;
}
int main()
{
int a = 10;
int b = 20;
Add(a, b);
printf("%d\n", global);
return 0;
}
#include <stdio.h>
void func(void);
int main(void)
{
int i = 0;
while (i < 5) {
func();
i++;
}
return 0;
}
void func(void) {
int value = 0;
value++;
printf("%d\n", value);
}

#include <stdio.h>
void func(void);
int main(void)
{
int i = 0;
while (i < 5) {
func();
i++;
}
return 0;
}
void func(void) {
static int value = 0;
value++;
printf("%d\n", value);
}

출력 예)읽은 책의 페이지 수를 입력하시오 : 30최종 누적 페이지 : 30읽은 책의 페이지 수를 입력하시오 : 20최종 누적 페이지 : 50읽은 책의 페이지 수를 입력하시오: 40최종 누적 페이지 : 90읽은 책의 페이지 수를 입력하시오 : -1더 분발하세요.// 전역변수
#include <stdio.h>
int totalPage = 0;
int main(void)
{
int page = 0;
while(1) {
printf("읽은 책의 페이지 수를 입력하시오 : ");
scanf("%d", &page);
if (page == -1) {
printf("더 분발하세요.\n");
break;
}
totalPage += page;
printf("최종 누적 페이지 : %d\n", totalPage);
}
return 0;
}
// 정적(static) 변수
#include <stdio.h>
int main(void)
{
static int totalPage = 0;
int page = 0;
while(1) {
printf("읽은 책의 페이지 수를 입력하시오 : ");
scanf("%d", &page);
if (page == -1) {
printf("더 분발하세요.\n");
break;
}
totalPage += page;
printf("최종 누적 페이지 : %d\n", totalPage);
}
return 0;
}
int a;int a; int b;
int a[100];
int array[5]의 경우 배열의 타입은 int, 배열의 이름은 array, 길이는 5 int array[3]; // 배열 선언
array[0] = 1; // 배열의 첫 번째 요소 접근
array[1] = 2; // 배열의 두 번째 요소 접근
array[2] = 3; // 배열의 세 번째 요소 접근
int array[5] = {1, 2, 3, 4, 5};
#include <stdio.h>
int main(void)
{
int total = 0;
int array[5] = {1, 2, 3, 4, 5};
total=array[0]+array[1]+array[2]+array[3]+array[4];
printf("%d", total);
return 0;
}
int array[] = {1, 3, 5, 7, 9};
int arr1[5] = {1, 2, 3, 4, 5};
int arr2[5];
arr2 = arr1
error C2106 에러 : 배열은 상수이기 때문에 대입 연산자를 통해 값을 넘겨 받을 수 없다. #include <stdio.h>
int main(void)
{
int i;
int arr1[5] = {1, 2, 3, 4, 5};
int arr2[5];
for (i = 0; i < 5; i++) {
arr2[i] = arr1[i];
}
for (i = 0; i < 5; i++) {
printf("%d\n", arr2[i]);
}
return 0;
}
출력 예)배열 arr2[0] = 5배열 arr2[1] = 4배열 arr2[2] = 3배열 arr2[3] = 2배열 arr2[4] = 1#include <stdio.h>
int main(void)
{
int i;
int arr1[5] = {1, 2, 3, 4, 5};
int arr2[5];
for (i = 0; i < 5; i++) {
arr2[4 - i] = arr1[i];
}
for (i = 0; i < 5; i++) {
printf("%d\n", arr2[i]);
}
return 0;
}
printf("Hello World")와 같은 문자열은 모두 상수
char str[12] = "Hello World";
#include <stdio.h>
int main()
{
char str[12] = "Hello World";
printf("%s\n", str);
return 0;
}
char str[100] = "Beautiful";
#include <stdio.h>
int main()
{
int i;
char str1[100] = "Beautiful";
for (i=0; i<10; i++)
printf("%c ", str1[i]);
printf("\n");
printf("str1 = %s\n", str1);
return 0;
}
* 기호만 붙여주면 된다. 주소값만 저장하겠다는 의미
char *pA;
int *pB;
double *pC;
& 기호를 통해 변수의 주소값을 얻어올 수 있다.
int b = 100;
int *pB = &b;
#include <stdio.h>
int main()
{
int b = 100;
int *pB = &b;
printf("b = %d\n", b);
printf("&b = %p\n", &b);
printf("*pB = %d\n", *pB);
printf("pB = %p\n", pB);
return 0;
}
%p 사용함. *와 그 후에 사용하는 *는 의미가 다르다.
pB는 주소값 0x7ffeae2f497c를 저장하고 있는 포인터 변수int bpB는 변수 b의 주소 및 실제 값을 참조 가능 
&arr[0]의 값과 일치한다. #include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++){
printf("arr[%d] = %d\n", i, arr[i]);
printf("&arr[%d] = %p\n", i, &arr[i]);
}
printf("배열의 이름 : %p\n", arr);
return 0;
}

정수는 4바이트 이므로, 주소값이 4씩 커지는 것을 볼 수 있음
배열의 이름 == 포인터
배열의 이름이 포인터이지만 일반 포인터와 결정적인 차이점이 있다.
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int temp = 10;
arr = temp; // 오류 발생
return 0;
}
int main(void)
{
int a = 10;
Temp(a);
return 0;
}
void Temo(int b) {
}
#include <stdio.h>
void func(int *pArr) {
for (int i = 0; i < 5; i++){
printf("pArr[%d] = %d\n", i, *(pArr + i));
}
}
int main()
{
int arr[] = {1, 2, 3, 4, 5};
func(arr);
for (int i = 0; i < 5; i++){
printf("arr[%d] = %d\n", i, arr[i]);
}
return 0;
}

int *pArr임을 볼 수 있다. 주소값을 넘겨받기 위해서는 포인터 형태로 받아야 하기 때문이다.