목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

Similar documents
목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-1Array.ppt

슬라이드 1

PowerPoint 프레젠테이션

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap11-포인터의활용.pptx

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

설계란 무엇인가?

02장.배열과 클래스

Infinity(∞) Strategy

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap10-함수의활용.pptx

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

11장 포인터

歯9장.PDF

untitled

untitled

13 주차문자열의표현과입출력

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Microsoft PowerPoint - 제3장-배열.pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

설계란 무엇인가?

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - 7장 배열 pptx

11장 포인터

금오공대 컴퓨터공학전공 강의자료

ch15

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - chap06-4 [호환 모드]

금오공대 컴퓨터공학전공 강의자료

기초컴퓨터프로그래밍

Infinity(∞) Strategy

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

Microsoft PowerPoint - chap06-5 [호환 모드]

중간고사

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

C 프로그래밊 개요

Microsoft PowerPoint - ch07 - 포인터 pm0415

OCW_C언어 기초

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

JAVA PROGRAMMING 실습 02. 표준 입출력

8장. 포인터

PowerPoint 프레젠테이션

OCW_C언어 기초

11장 포인터

C 프로그래밊 개요

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

C 프로그램의 기본

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - Chapter_08.pptx

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - chap06-8 [호환 모드]

윈도우즈프로그래밍(1)


프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-8.ppt

쉽게 풀어쓴 C 프로그래밍

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Java ...

Microsoft PowerPoint - ch01.ppt

Microsoft PowerPoint - 제11장 포인터(강의)

PowerPoint Presentation

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

슬라이드 1

OCW_C언어 기초

슬라이드 1

PowerPoint Template

컴파일러

Microsoft PowerPoint - chap09-1.ppt

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

03장.스택.key

11장 포인터

chap8.PDF

본 강의에 들어가기 전

KNK_C_05_Pointers_Arrays_structures_summary_v02

YRRZBRRLMCEQ.hwp

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint 프레젠테이션

: 1 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) print

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

Transcription:

제 7 장. 배열

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

배열의개요 배열 (array) 의정의 같은데이터형을가지는여러개의변수를하나의배열명으로공유 기억공간을순차적으로할당받아사용하는것 [ 7.1] C 3

배열의개요 배열 (array) 의필요성 같은데이터형의여러개의변수간결하게선언 기억공간을순차적으로변수의값들을저장, 관리 국어, 영어, 수학성적의변수선언예 [ 7.2] C 4

정수형데이터를배열에대입, 출력 #include<stdio.h> void main(void) [ ] 1245016 0 1245020 10 1245024 20 1245028 30 1245032 40 1245036 50 1245040 60 1245044 70 1245048 80 1245052 90 C 5

배열의개요 배열 (array) 의구조 배열의요소들이기억장치에저장되어지는주소값및실제변수값의구조 정수형배열변수에배열요소구조예 a[0]=1,, a[9]= 90 [ 7.3] (int a[10]) C 6

배열사용하기 배열의선언 [ ] 배열명은변수명을지정할때와같은규칙을따름 영문자대 소문자또는언더바 (_) 가첫번째문자로사용 숫자사용가능 ( 단, 배열변수명의첫번째문자로는사용 불가 ) 특수문자및예약어사용불가 ( 데이타형, 명령어등 ) C 7

배열사용하기 배열의초기화 배열의초기치를선언문에직접입력 int a[5] 0,1,2,3,4 int b[5] 1, 2, 3 반복문또는제어문을이용한배열의초기화 int i, a[5] for(i 0 i< 4 ; i++) a[i] i+1 배열선언시요소개수를지정하지초기화 int a[ ] 0, 1, 2, 3, 4 int b[ ] 1, 2, 3 C 8

for 반복문을사용한배열의초기화예 #include<stdio.h> void main(void) int i, a[5] for(i 0 i< 4 i++) a[i] i+1 printf( a[%d] %d n, i, a[i]) [ ] a[0] 1 a[1] 2 a[2] 3 a[3] 4 a[4] 5 C 9

배열사용하기 배열초기화할때주의할점 문자열변수를배열로선언할때» 문자열의마지막에는 NULL 문자가반드시존재» 실제문자열의수보다 1 바이트크게배열의크기를지정 char color[3] RED ( ) char color[4] RED char color[4] R, E, D, 0/ 배열의초기값설정» 선언된배열의요소수보다적은수의초기치가주어진 경우에는모자라는요소의개수만큼은 0 이대입» 배열의요소개수보다많은수가초기화될경우에는컴파일 에러가발생 C 10

정수값의합및평균 #include<stdio.h> void main(void) int i, data[] 78, 55, 99, 75, 84, 39, 67, 98, 87, 100 int sum 0 float ave for (i 0 i < 10 i++) sum + data[i] ave (float)sum / 10.0 printf( Total %d Average %.2f n, sum, ave) [ ] Total 782 Average 78.20 C 11

정수의값들을오름차순으로정렬 #include<stdio.h> void main(void) int i, j, temp 0, data[] 78, 55, 99, 75, 84, 39, 67, 98, 87,100 for (i 0 i < 9 i++) for (j i+1 j <10 j++) if(data[i] > data[j]) temp data[i] data[i] data[j] [] [j] data[j] temp printf( Resort array list ) for(i 0 i<10 i++) printf( %3d, data[i]) []) [ ] Resort array list 39 55 67 75 78 84 87 98 99 100 C 12

다차원배열 2 차원배열선언및사용 2 차원배열은배열의요소를표현하는첨자가 2 개인배열 2 [ ][ ] ) int a[2][3]; 2 차원배열은 2( 행 ) 3( 열 )=6( 개 ) 의요소의수만큼변수 사용이가능 메모리공간은 6( 개 ) 4(Byte)=24Byte 를할당 C 13

다차원배열 2 차원배열의초기화 int a[2][3] 0, 1, 2, 3, 4, 5, int a[2][3] 0, 1, 2, 3, 4, 5 2 차원배열의구조 C 14

2 차원배열요소의합 #include<stdio.h> void main(void) int m[4][3] 10, 5, 3, 9, 0, 0, 32, 20, 1, 0, 0, 8 int row, column, sum 0 for( row 0 row < 4 row++ ) for( column 0 column < 3 column++ ) sum sum + m[row][column] printf( m[%d][%d] %d n %d n, row, column, m[row][column]) printf( The total is %d n, sum ) [ ] m[0][0] 10 m[0][1] 5 m[0][2] 3 m[1][0] 9 m[1][1] 0 m[1][2] 0 m[2][0] 32 m[2][1] 20 m[2][2] 1 m[3][0] 0 ] m[3][1] 0 ] m[3][2] 8 ] The total is 82 C 15

다차원배열 3 차원배열선언및사용 3 차원배열은배열의요소를표현하는첨자가 3 개인배열 3 [, ][ ][ ] ) ) int a[2][2][2] 0, ] 1, 2, 3, 4, 5, 6, 7 3차원배열은 2( 평면 ) 2( 행 ) 2( 열 )=8( 개 ) 의요소의수만큼변수사용이가능 메모리공간은 8( 개 ) 4(Byte)=32Byte를할당 C 16

다차원배열 3 차원배열의구조 Step 1: 평면에 2차원배열에해당하는데이터를행, 열의순서대로대입 Step 2: 다음평면요소에 Step 1 과같이 2 차원배열에해당하는 데이터를행, 열의순서대로대입 C 17

배열을이용한문자열다루기 문자열의입출력 문자표현 : 작은따옴표 ( ) 사용 문자열표현 : 큰따옴표 ( ) 사용 a, b, c, d abcd, C Language g 한줄의문자열을입력받는함수 : gets() 함수 한줄의문자열을출력하는함수 : puts() 함수 C 18

gets(), puts() 함수의사용 #include<stdio.h> void main(void) char name[100] printf( What s your name? n ) gets(name) printf( Nice to meet you, ) puts(name) [ ] What's your name? Gil Dong Hong Nice to meet you, Gil Dong Hong C 19

배열을이용한문자열다루기 문자배열선언및사용 [ ] char color_1[3] RED ( ) char color_2[4] RED 메모리구조 (a) char color_1[3] RED (b) char color_2[4] 2[4] RED C 20

배열을사용한문자열복사 (NULL ) #include<stdio.h> void main(void) char a1[5] BOOK, a2[5] a2[0] a1[0] a2[1] a1[1] a2[2] a1[2] a1[2] a2[3] a1[3] a2[4] a1[4] printf( a1 %s n, a1) printf( a2 %s n, a2) [ ] a1 BOOK a2 BOOK C 21

실무응용예제 ( 초급 ) 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> void main(void) int math[10], i; float sum=0.0, ave=0.0; printf( 학생 10 명의수학성적을입력하세요 : ); for(i=0; i<10; i++) scanf( %d, &math[i]); sum += (float)math[i]; ave=sum/10.; ; printf( 학생 10명의수학성적합은 %.2f이고, 평균은 %.2f입니다 \n, sum, ave); C 22

실무응용예제 ( 초급 ) 2. 1 #include<stdio.h> 2 3 void main(void) 4 5 6 7 int i, j, k; 8 9 10 11 12 13 14 15 16 17 18 19 20 int in1[2][3]=1, 2, 3, 4, 5, 6, out[2][2]=0, 0, 0, 0; int in2[3][2]=1, 2, 3, 4, 5, 6; for(i=0; ; i<2;i++) ; for(j=0; j<2; j++) for(k=0; o( k<3; k++) out[i][j] += in1[i][k] * in2[k][j]; printf( %d, out[i][j]); printf( \n ); C 23

실무응용예제 ( 중급 ) 3. 1 #include<stdio.h> 2 void main(void) 3 4 int in[100][100]; 5 int out[100][100]; 6 int i, j, row, colum; 7 printf( 행과열을입력하시오 : ); 8 scanf( %d %d, &row, &colum); 9 for(i=0; i<row;i++) 10 11 for(j=0; j<colum; j++) 12 13 printf( 행렬의요소를입력하시오. in[%d][%d]=, i, j); 14 scanf( %d, &in[i][j]); 15 out[j][i]=in[i][j]; 16 17 18 printf( 입력행렬 \n ); C 24

실무응용예제 ( 중급 ) 3. ( ) 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 for(i=0; i<row;i++) for(j=0; j<colum; j++) printf( in[%d][%d]=%d \t, i, j, in[i][j]); printf( \n ); printf( 전치행렬 \n ); for(i=0; i<colum;i++) for(j=0; j<row; j++) printf( out[%d][%d]=%d \t, i, j, out[i][j]); printf( \n ); C 25

실무응용예제 ( 재귀함수의이용 ) 1, 2, 3, 5, 8, 13, 21, - 10 int pibo(int N) 11 12 int result1; 13 if(n==0) return 1; 14 if(n==1) return 1; 15 if(n >= 2) 16 17 result1 = pibo(n-1) + pibo(n-2); 18 return result1; 19 20 C 26

Fibonacci 수 C 27

피보나치수열과황금비 C 28

피노나치수열과황금비 C 29

http://www.mcs.surrey.ac.uk/personal/r.knott/fibonacci/fibnat.html#golden C 30

실무응용예제 ( 중급 ) 4. 1, 2, 3, 5, 8, 13, 21, 1 #include<stdio.h> 2 3 void main(void) 4 5 int i, pibo[100], index; 6 printf( 구할피보나치수열의 i번째 : ); 7 scanf( %d, &i); 8 for(index=0; index<=i; index++) 9 10 if(index==0) pibo[index]=1; 11 if(index==1) pibo[index]=1; 12 if(index>=2) 13 14 pibo[index]=pibo[index-1] +pibo[index-2]; 15 16 17 printf( 피보나치수열의 i번째값 :%d \n, pibo[i]); 18 C 31

실무응용예제 ( 고급 ) 5. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> #include<math.h> void main(void) int in[3][3]=1, 2, 3, 4, 5, 6, 7, 8, 9; int i, j, index=0, sum=0; double ave, rest[3]=0., 0., 0., temp=10000; for(i=0; i<3;i++) for(j=0; j<3; j++) if(i == j) sum += in[i][j]; printf( 행렬의대각선요소의합 :%d \n, sum); ave=(float)sum /3.; C 32

실무응용예제 ( 고급 ) 5. ( ) 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 for(i=0; i<3;i++) for(j=0; j<3; j++) if(i == j) rest[i]=abs(ave-in[i][j]); for(i=0; i<3; i++) if(rest[i] <= temp) temp=rest[i]; index=i; printf( 행렬의대각선중중간값위치 :%d, 중간값 %d \n, index+1, in[index][index]); C 33

실무응용예제 ( 고급 ) 6. 2 1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 5 void main(void) 6 7 int num[3][3], seed, i, j, in, temp; 8 printf( 숫자를입력해주세요 : ); 9 scanf( %d, &in); 10 while(1) 11 12 seed=time(null); 13 srand(seed); d) C 34

실무응용예제 ( 고급 ) 6. ( ) 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 for(i=0; i<3;i++) for(j=0; j<3;j++) num[i][j]=rand() % 9 +1; printf( %d, num[i][j]); if(in==num[i][j]) else printf( 입력하신숫자가일치합니다. 축하합니다. \n ); exit(0); printf( 입력하신숫자와다른숫자값입니다. 숫자를다시입력하십시오. \n ); C 35

실습프로그램 배열로입력된점수와이름자료에대해최고 점수와최저점수를가진학생의이름과성적을 출력하시오 예 : Grade[10]=80, 98, 60, 85, 83, 92, 95, 76 70, 60 Name[][10]= 김영희, 박영아,.. 홍길동 최고점 : 98, 박영아 최저점 : 60. 홍길동 C 36