Professional Documents
Culture Documents
printf 로 출력하기
1. %d : 정수 출력
3. %g : 실수 출력 / 지수 형태로도 출력
5. %s : 문자열 출력
*** \n : 줄바꿈
4 강. 변수
변수에 값을 대입 : a = 3;
5 강. 자료형
1. 정수형
- char (1 바이트) : 문자
- short (2 바이트)
- long (4 바이트)
- long long (8 바이트)
- int (4 바이트) : %d
2. 실수형
- float (4 바이트) : %f
- double (8 바이트)
*** 정수 / 정수 = 정수
*** 실수 / 정수 = 실수
*** 실수 / 실수 = 실수
*** 정수 + 정수 = 정수
*** 정수 + 실수 = 실수
*** 실수 + 실수 = 실수
7 강. Scanf 로 입력받기
int a, b;
scanf("%d%d", &a, &b); // & : 포인터
*** %d : 정수 입력 (int)
*** %f : 실수 입력 (float)
*** %c : 문자 입력
char a = 67;
printf("%d", a); = 67
printf("%c", a); = C
printf("%c", 'C'); = C
printf("%d", 'C'); = 67
산술연산자 : 수학적인 연산
*** + , - , * , / , % , =
*** += , -= , *= , /= , %=
*** ++ , --
1. = : 대입 연산 ( 오른쪽 값을 왼쪽 값에 저장한다 )
2. a += 6; 은 a = a + 6; 과 같은 문장
3. ++ / -- : 증가 / 감소 연산자
a++; 은 a = a + 1; 과 같고 a += 1; 과 같다 ( a 값이 1 증가 )
*** 전치와 후치
11 강. 비교연산자 + 논리연산자
참 : 1
거짓 : 0
*** 비교연산자
1. == : 같다
2. != : 다르다
3. >= , <=
*** 논리연산자
2. || : 또는 or
if 문으로 경우 나누기
1. if - else 문 : 2 가지 경우 나누기
if (조건) {
조건을 만족하면 실행;
}
else {
조건을 만족하지 않으면( 거짓 : 0 ) 실행;
}
if (조건 1) {
조건 1 을 만족하면 실행;
}
else if (조건 2) {
조건 2 를 만족하면 실행;
}
else {
그외 나머지 경우에 실행;
}
13 강. 중첩 if 문
중첩 if 문
중괄호 코딩 스타일
*** if 문 { } 안에 ; 가 한 개 있으면 { } 생략 가능
int main() {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if (a > b) {
if (a > c) {
printf("%d\n", a);
}
else {
printf("%d\n", c);
}
}
else {
if (b > c) {
printf("%d\n", b);
}
else {
printf("%d\n", c);
}
}
}
14 강. Switch 문
switch (변수) {
case 1: ---> 변수 = 1 인 경우
~~~;
break;
case 2:
~~~;
break;
ㅣ
ㅣ
ㅣ
15 강. While 문
반복문
1. while 문
while ( 조건 ) {
반복;
}
조건을 만족할 경우에만 { } 안의 반복문을 실행한다
조건을 만족하지 않는 경우에는 { } 를 빠져나오거나 아예 들어가지를 않는다
2. do - while 문
do {
반복문
} while ( 조건 )
3. 무한 반복
while (true) {
반복문
}
16~17 강. For 문
1. for 문
int i;
for (i = 1; i <= 10; i++) {
~~~;
}
int i;
i = 1;
while (i <= 10) {
~~~;
i++;
}
18 강. 중첩 for 문
1. break : 반복문 한 개를 빠져 나옴
int k;
scanf("%d", &k);
if (k = 0) {
break;
}
int n;
scanf("%d", &n);
printf("\n");
}
20 강. 1 차원 배열
int a[5];
// 크기가 5 인 1 차원 배열 선언 : a = { a[0], a[1], a[2], a[3], a[4] }
21 강. 배열의 활용 예제
int n;
int arr[1000];
printf("입력할 숫자의 개수 입력 : ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for(int i = n-1; i >= 0; i--) {
printf("%d ", arr[i]);
}
2. 최대 / 최소 구하기
int n;
int arr[1000];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int max = arr[0];
for (int i = 1; i < n; i++) {
if ( max < arr[i]) {
max = arr[i];
}
}
printf("%d\n", max);
3. 짝수 / 홀수의 개수 구하기
int n;
int arr[1000];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int cnt = 0;
for (int i = 1; i < n; i++) {
if ( arr[i] % 2 == 0 ) {
cnt++;
}
}
printf("%d\n", cnt);
22 강. 2 차원 배열
int arr[3][4]; // 크기 3 행 4 열 인 배열 선언
int arr[3][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12}
};
printf("\n")
int a = 20;
int *ptr_a;
// 포인터 변수 ptr_a 선언 ( 가리킬 변수의 자료형 *포인터변수이름 )
ptr_a = &a;
// &a : 변수 a 의 주소값을 반환
// &a( 변수 a 의 주소값 ) 을 포인터 변수에 저장
// 메모리상 int 형 변수 a 가 차지하는 4 칸 (4 바이트) 중 첫번째 칸의 주소값이
저장된다
int a = 10;
int **ptr_ptr;
// a 를 가리키는 포인터변수 ptr 을 가리키는 포인터변수 ptr_ptr 선언
ptr_ptr = &ptr;
25 강. 배열과 포인터의 관계
int a;
int *ptr_a = &a; // 포인터변수 ptr_a 선언과 동시에 초기화
26 강. 배열 포인터
*(ptr + i) = *(arr + i)
arr[i] = ptr[i]
1. arr = &arr[0]
---> 배열의 한 칸 (첫번째 칸) 만을 가리키는 포인터 변수
---> 배열포인터가 아니다!!!
2. *arr = arr[0]
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
int arr[3] = { 1, 2, 3 };
int(*ptr_arr)[3];
// 길이 3 인 int 형 배열 arr 을 가리키는 배열 포인터 변수 ptr_arr 을 선언
---> 오직 배열만 가리킬수있다
ptr_arr = &arr;
*(ptr_arr)[i] = arr[i]
27 강. 2 차원 배열과 배열 포인터
int arr[2][3]; // 2 행 3 열의 배열 선언
sizeof(arr) = 4 * 6 = 24 ( 2 차원 배열 전체의 크기 )
sizeof(arr[0]) = 4 * 3 = 12 ( 2 차원 배열에서 첫번째 배열 ( 1 행 ) 의 크기
)
sizeof(arr[0][0]) = 4 ( 1 행 1 열 의 크기 )
1. arr = &arr[0]
2. *arr = arr[0]
3. arr + 1 = &arr[0] + sizeof(*arr)
int arr[2][3];
int(*ptr)[3] = arr ( = &arr[0] );
// 크기가 3 인 1 차원 배열을 가리키는 배열 포인터 변수 ptr 선언
*** 문자열의 출력 원리
문자열 = char 형 배열
char str[] = "Hello";
printf("%s\n", str ( = &str[0] ) );
--> printf + %s : 배열의 첫번째칸의 포인터를 입력해주면 널문자가
나올때까지 자동으로 출력해준다
char strings[3][10] = { "Hello", "World", "Doodle" };
for( int i = 0; i < 3; i++) {
printf("%s\n", strings[i] ( = &strings[i][0] ) )
---> &strings[i] 는 배열 자체를 가리키므로 오류 발생
}
31 강. 함수
*** main 함수
Int main() {
Printf( ) // 이미 선언된 함수 printf 를 호출한다 (stdio.h 에 포함)
}
*** 함수
반환형 함수명(자료형 매개변수 1, 자료형 매개변수 2, ~ ) {
~~~
}
Return : 반환