: 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int...
Transcript of : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int...
![Page 1: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/1.jpg)
배열 관련 연습문제
1
Thursday, May 19,
![Page 2: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/2.jpg)
2
#include <stdio.h> int main(void) { int arr[9]; int n, i; printf("정수 입력: "); scanf("%d", &n); for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) { if(i%2 == 1) printf("%d ", arr[i]); } printf("\n"); return 0; }
예:정수 입력: 36 12 18 24
구구단 출력 예제: 1차원 배열 이용
입력받은 값의 구구단 값 저장
구구단 값 중 짝수번째 위치 출력
Thursday, May 19,
![Page 3: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/3.jpg)
3
#include <stdio.h> int main(void) { int arr[9]; int n, i; printf("정수 입력: "); scanf("%d", &n); for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) { if(i%2 == 1) printf("%d ", arr[i]); } printf("\n"); return 0; }
예:정수 입력: 36 12 18 24
구구단 출력 예제: 1차원 배열 이용
입력받은 값의 구구단 값 저장
구구단 값 중 짝수번째 위치 출력
Thursday, May 19,
![Page 4: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/4.jpg)
4
#include <stdio.h> int main(void) { int arr[9]; int n, i; printf("정수 입력: "); scanf("%d", &n); for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) { if(i%2 == 1) printf("%d ", arr[i]); } printf("\n"); return 0; }
예:정수 입력: 36 12 18 24
구구단 출력 예제: 1차원 배열 이용
입력받은 값의 구구단 값 저장
구구단 값 중 짝수번째 위치 출력
Thursday, May 19,
![Page 5: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/5.jpg)
5
#include <stdio.h> int main(void) { char arr[26]; char ch; int i; for(i=0, ch='A'; i<26; i++) arr[i] = ch++; for(i=0; i<26; i++) printf("%c ", arr[i]); printf("\n"); return 0; }
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
영어 알파벳 저장 및 출력 예제: 1차원 배열 이용
영어 알파벳 저장
영어 알파벳 출력
Thursday, May 19,
![Page 6: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/6.jpg)
6
#include <stdio.h> int main(void) { char arr[26]; char ch; int i; for(i=0, ch='A'; i<26; i++) arr[i] = ch++; for(i=0; i<26; i++) printf("%c ", arr[i]); printf("\n"); return 0; }
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
영어 알파벳 저장 및 출력 예제: 1차원 배열 이용
영어 알파벳 저장
영어 알파벳 출력
Thursday, May 19,
![Page 7: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/7.jpg)
7
#include <stdio.h> int main(void) { char arr[26]; char ch; int i; for(i=0, ch='A'; i<26; i++) arr[i] = ch++; for(i=0; i<26; i++) printf("%c ", arr[i]); printf("\n"); return 0; }
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
영어 알파벳 저장 및 출력 예제: 1차원 배열 이용
영어 알파벳 저장
영어 알파벳 출력
Thursday, May 19,
![Page 8: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/8.jpg)
8
#include <stdio.h> int main(void) { char str1[5]="Good"; char str2[]="morning"; printf("%s \n", str1); printf("%s %s \n", str1, str2); return 0; }
1차원 배열을 이용한 문자열 변수 표현
문자열 배열 선언
크기 명시 안해도 됨
출력은 이미 배웠음
Good Good morning
Thursday, May 19,
![Page 9: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/9.jpg)
9
• 문자열 특징
• 문자열은 널(null) 문자를 끝에 지닌다.
• 널(null) 문자: ‘\0’ (아스키 코드 값으로 0)
#include <stdio.h> int main(void) { char str[6]="Hello"; printf("Hello"); return 0; }
! "#$%&'()* "#$+&,-./001"#2&34&5678)* ,-./001&"#&9&:;<:-=>?&@A&BCD&<1)
E.F&GHE.-IJEK1)
L)
&&&&MNHO&PFOQRSTUVW00JUX)
&&&&YOE.FZ-UVW00JU1X&&)
&&&&8&8&8&8&8)
[[\]&&^$&_`&"#$&ab)
cd&[[\e)
1차원 배열을 이용한 문자열 변수 표현
Thursday, May 19,
![Page 10: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/10.jpg)
10
• 널(null) 문자를 사용해야 하는 경우
• 문자열의 끝을 표현하기 위해서.
• 쓰레기 값과 실제 문자열의 경계를 나타내기 위해
• printf 함수는 널 문자를 통해서 출력 범위를 결정한다.
#include <stdio.h> int main(void) { char str[100]={‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘ ‘, ‘W’, ‘o’, ‘r’, ‘l’, ‘d’}; printf("%s \n", str); return 0; }
Hello
1차원 배열을 이용한 문자열 변수 표현
Thursday, May 19,
![Page 11: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/11.jpg)
11
• 문자열과 char형 배열의 차이점
#include <stdio.h> int main(void) { char arr1[] = “abc”; char arr2[] = {‘a’, ‘b’, ‘c’}; char arr3[] = {‘a’, ‘b’, ‘c’, ‘\0’};}
같음
null 이 없음
1차원 배열을 이용한 문자열 변수 표현
Thursday, May 19,
![Page 12: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/12.jpg)
12
#include <stdio.h> int main(void) { int i; char ch; char str[6]="Hello"; printf("--변경 전 문자열--\n"); printf("%s \n", str); for(i=0; i<6; i++) printf("%c | ", str[i]);
/* 문자열 변경 */ for(i=0; i<3; i++) { ch=str[4-i]; str[4-i]=str[i]; str[i]=ch; } printf("\n\n--변경 후 문자열--\n"); printf("%s \n", str); return 0; }
1차원 배열 순서 뒤집기 함수 예제
--변경 전 문자열--Hello H | e | l | l | o | |
--변경 후 문자열--olleH
순서 뒤집기 함수 본체
Thursday, May 19,
![Page 13: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/13.jpg)
13
#include <stdio.h> int main(void) { int i; char ch; char str[6]="Hello"; printf("--변경 전 문자열--\n"); printf("%s \n", str); for(i=0; i<6; i++) printf("%c | ", str[i]);
/* 문자열 변경 */ for(i=0; i<3; i++) { ch=str[4-i]; str[4-i]=str[i]; str[i]=ch; } printf("\n\n--변경 후 문자열--\n"); printf("%s \n", str); return 0; }
--변경 전 문자열--Hello H | e | l | l | o | |
--변경 후 문자열--olleH
순서 뒤집기 함수 본체
1차원 배열 순서 뒤집기 함수 예제
Thursday, May 19,
![Page 14: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/14.jpg)
14
#include <stdio.h> int main(void) { char str[30]; printf("문자열 입력: "); scanf("%s", str); printf("입력된 문자열: %s \n", str); return 0; }
scanf 함수 이용 문자열 입력
문자열 입력: abcdefg입력된 문자열: abcdefg
Thursday, May 19,
![Page 15: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/15.jpg)
15
#include <stdio.h> int main(void) { char str[30]; printf("문자열 입력: "); scanf("%s", str); printf("입력된 문자열: %s \n", str); return 0; }
scanf 함수 이용 문자열 입력
문자열 입력: My Sweet Home입력된 문자열: My
공백 사용시 예상치 못한 출력 결과를 보임에 주의
Thursday, May 19,
![Page 16: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/16.jpg)
16
#include <stdio.h> int main(void) { char string[100]; int len = 0; printf("문자열 입력: "); scanf("%s", string); while(string[len] != 0) len++; printf("입력한 문자열의 길이는 %d \n", len); return 0; }
하나의 문자열을 입력 받아 길이를 출력 하는 함수
문자열 입력: abc1234입력한 문자열의 길이는 7
Thursday, May 19,
![Page 17: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/17.jpg)
17
#include <stdio.h> int main(void) { char string[100]; int len = 0; printf("문자열 입력: "); scanf("%s", string); while(string[len] != 0) len++; printf("입력한 문자열의 길이는 %d \n", len); return 0; }
하나의 문자열을 입력 받아 길이를 출력 하는 함수
문자열 입력: abc1234입력한 문자열의 길이는 7
Thursday, May 19,
![Page 18: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/18.jpg)
18
#include <stdio.h> int main(void) { char string[100]; int len = 0; printf("문자열 입력: "); scanf("%s", string); while(string[len] != 0) len++; printf("입력한 문자열의 길이는 %d \n", len); return 0; }
하나의 문자열을 입력 받아 길이를 출력 하는 함수
문자열 입력: abc1234입력한 문자열의 길이는 7
Thursday, May 19,
![Page 19: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/19.jpg)
19
#include <stdio.h> int main(void) { int arr[3][9]; int i, j; /* 구구단 입력 */ for(i=0; i<3; i++) for(j=0; j<9; j++) arr[i][j] = (i+2) *(j+1); /* 구구단 출력 */ for(i=0; i<3; i++) { for(j=0; j<9; j++) printf("%3d", arr[i][j]); printf("\n"); } return 0; }
2차원 배열 이용 구구단 저장
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
Thursday, May 19,
![Page 20: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/20.jpg)
20
#include <stdio.h> int main(void) { int arr[3][9]; int i, j; /* 구구단 입력 */ for(i=0; i<3; i++) for(j=0; j<9; j++) arr[i][j] = (i+2) *(j+1); /* 구구단 출력 */ for(i=0; i<3; i++) { for(j=0; j<9; j++) printf("%3d", arr[i][j]); printf("\n"); } return 0; }
2차원 배열 이용 구구단 저장
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
Thursday, May 19,
![Page 21: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/21.jpg)
21
#include <stdio.h> int main(void) { int arr1[2][4] = {1, 2, 3, 4, 5, 6, 7, 8}; int arr2[4][2]; int i, j; /* 이동 */ for(i=0; i<2; i++) for(j=0; j<4; j++) arr2[j][i] = arr1[i][j]; /* 출력 */ for(i=0; i<4; i++) { for(j=0; j<2; j++) printf("%3d", arr2[i][j]); printf("\n"); } return 0; }
2차원 배열 모양 바꾸기 함수
1 5 2 6 3 7 4 8
1 2 3 4 5 6 7 8
Thursday, May 19,
![Page 22: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int main(void) { int arr[9];](https://reader036.fdocuments.net/reader036/viewer/2022070719/5edeffe8ad6a402d666a5b7b/html5/thumbnails/22.jpg)
22
#include <stdio.h> int main(void) { int arr1[2][4] = {1, 2, 3, 4, 5, 6, 7, 8}; int arr2[4][2]; int i, j; /* 이동 */ for(i=0; i<2; i++) for(j=0; j<4; j++) arr2[j][i] = arr1[i][j]; /* 출력 */ for(i=0; i<4; i++) { for(j=0; j<2; j++) printf("%3d", arr2[i][j]); printf("\n"); } return 0; }
2차원 배열 모양 바꾸기 함수
1 5 2 6 3 7 4 8
1 2 3 4 5 6 7 8
Thursday, May 19,