: 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include int...

22
배열 관련 연습문제 1 Thursday, May 19,

Upload: others

Post on 02-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: : 1ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110518.pdf · 2011-05-19 · 2 #include  int main(void) { int arr[9];

배열 관련 연습문제

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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];

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,