#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