2007 1학기 12 배열.

Slides:



Advertisements
Similar presentations
Chapter 12 배열. 2 배열  의미  배열은 연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조로 그 사용이 간편  배열은 동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조 일반 변수가 단독주택이라면 배열은 아파트  크기  배열의.
Advertisements

03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
데이터의 표현과 연산 (1) (Chapter 3)
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
-Part3- 제3장 콘솔 입출력과 파일 입출력.
제1장 코드와라이브러리 Page 1 ~ 30 ■■■■■ ■ ■.
2007 1학기 10 함수 활용.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
C언어: 배열 (Arrays).
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
C 프로그래밍.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express.
Chapter 11 Strings.
6장 배열.
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
제 11 장 전처리기.
13. 포인터와 배열! 함께 이해하기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
자전거를 배우려면 안장에 올라가 페달을 밟아라.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
제어문 & 반복문 C스터디 2주차.
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
C언어 프로그래밍의 이해 Ch05. 명령문.
18장. 다차원 배열 그리고 포인터.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
어서와 C언어는 처음이지 제16장.
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
어서와 C언어는 처음이지 제23장.
C.
printf("Global Korea\n");
실습과제 1번 배열 크기 : 8 문자열 길이 : 7 // MBCS 예제: 출력 결과 이해하기
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Chapter 09. 배열.
어서와 C언어는 처음이지 제22장.
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
배열.
11장. 1차원 배열.
Presentation transcript:

2007 1학기 12 배열

배열 Perfect C 동일한 자료유형의 여러 변수를 일괄 선언 크기 연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조 동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조 크기 배열의 선언은 다음과 같은 구문을 이용 주요 요소는 배열 변수명(이름), 자료형, 그리고 배열의 크기 Perfect C

배열의 크기와 첨자 Perfect C 배열 원소(array element) 첨자 배열 score에서 10개의 자료형 int가 저장되는 각각의 항목 첨자 배열 원소는 첨자(index)를 사용하여 참조 즉 첫 배열 원소는 항상 첨자가 0이며, 차례로 1씩 증가 배열 첨자는 유효한 값의 범위를 벗어나는 경우, 문제 발생 항상 배열 첨자의 사용에 주의   첨자 범위 : 0 ~ size-1 Perfect C

Perfect C #include <stdio.h> int main(void) { int i =0, max = 0; int score[10] = {10, 20, 33, 35, 13, 22, 77, 45, 67, 88}; printf(“다음은 10명의 성적입니다 >>\n”); for (i = 0; i < 10; i++) printf(“%d%s”, score[i], (i==9) ? “\n\n”, “, “); if (max < score[i]) max = score[i]); printf(”가장 높은 성적은 %d”, max); return 0; } Perfect C

배열의 초기화 값의 초기화 Perfect C 첨자를 이용하여 각 원소에 값을 대입 배열을 선언하면서 각 원소의 값을 지정: 배열 초기화(initialization) 선언에서만 이용 가능 다음 문장은 잘못된 문장 배열의 초기화에서 배열 의 크기 생략 가능 int a[4]; a = {10, 30, 40, 50}; Perfect C

다차원 배열 2X4의 이차원 배열의 선언과 구조 Perfect C

Perfect C #include <stdio.h> int main(void) { int i =0, j = 0; int grade[][5] = {{10, 20, 33, 35, 13}, {22, 77, 45, 67, 88}}; for (i = 0; i < 2; i++) for (j = 0; j < 5; j++) printf(“%d%s”, grade[i][j], (j==4) ? “\n”, “, “); return 0; } Perfect C

문자열 처리와 저장 Perfect C 문자열 문자열은 널(null) 문자(\0)가 문자 배열의 마지막에 저장 문자열은 일련의 문자를 앞 뒤로 인용부호 “”로 둘러싸서 표기 문자열은 널(null) 문자(\0)가 문자 배열의 마지막에 저장 문자열을 저장하는 배열의 크기는 저장되는 문자의 개수 보다 1이 커야 함 항상 널 문자가 문자열의 마지막에 있어야 함 만일 \0 문자가 없는 경우는 문자열로 취급하지 않음 위 문장은 아래 문장과 같이 문자 하나 하나를 배열에 저장하여 문자열을 표현 가능 이러한 경우, 반드시 프로그래머가 알아서 널 문자를 문자열의 마지막에 \0 저장 Perfect C

문자열 출력 char s[] = “C Language!”; Perfect C 문자열이 저장된 배열 이름을 이용하여 printf()문을 이용 배열 이름이 문자열 자체를 나타낸다고 생각 문자열을 출력하는 또 다른 방법은 다음과 같이 문자열을 구성하는 각각의 문자를 출력하는 방법 출력의 제한을 널(\0) 문자로 검사하면 편리 char s[] = “C Language!”; printf(“%s”, s); Perfect C

중간점검 Perfect C 4. 다음 소스에서 출력값은? 0 int cnt[2][3] = {1, 2}; printf(“%d\n”, cnt[0][2]); 5. 다음 소스에서 문제부분은? {1, 2, 3} 이면 2열을 넘어 int apt[3][2] = {{1, 2, 3}, {5, 6}}; 6. 다음 소스에서 출력값은? b char ch[10] = “fibonacci”; printf(“%c\n”, ch[2]); 7. 다음 소스에서 문제부분은? Null값(\0)이 들어갈 자리가 없어 char str[3] = {‘c’, ‘p’, ‘p’}; printf(“%s\n”, str); Perfect C

이차원 배열 Perfect C 성적 처리, 이차원 배열 이용 프로그램 주어진 4명에 대한 중간, 기말 성적을 가지고 개인 성적의 합과 중간, 기말고사 각각 모든 학생의 합을 구하는 프로그램 주어진 성적 점수와 프로그램에서 구할 합을 저장할 공간으로 배열 grade를 이용 이차원 배열이름 grade로 선언한 후, 초기 값으로 각 학생의 점수를 입력 Perfect C

Perfect C #include <stdio.h> #define NUM_STUDENT 4 //학생수 #define MID_INDEX 0 //중간고사 첨자 #define FINAL_INDEX 1 //기말고사 첨자 #define SUM_INDEX 2 //개인성적 합 첨자 int main(void) { int i, j, total = 0; int grade[][3] = { {10, 20}, {33, 35}, {13, 79}, {60, 45}, {0, 0} }; for (i =0; i < NUM_STUDENT; i++) { for (j = 0; j < SUM_INDEX; j++) grade[i][SUM_INDEX] += grade[i][j]; //개인 성적 합 구하기 grade[NUM_STUDENT][MID_INDEX] += grade[i][MID_INDEX]; grade[NUM_STUDENT][FINAL_INDEX] += grade[i][FINAL_INDEX]; } for (i =0; i <= NUM_STUDENT; i++) for (j = 0; j <= SUM_INDEX; j++) printf(“\t%3d%s”, grade[i][j], (j==SUM_INDEX) ? “\n” : “”); return 0; Perfect C

문자열의 입력 Perfect C 함수 scanf 표준입력으로 문자열을 입력 받으려면 문자 배열의 변수에 입력된 문자열을 저장 아래의 예에서 이름을 “홍 길동”으로 입력하면 배열 name 에는 “홍” 만이 저장되는 문제가 발생 함수 scanf()에서 %s의 변환 명세로 입력 받는 문자열은 문자가 시작되고 공백이 나오기 이전까지의 문자열 한글을 입력하려면 2바이트가 필요하므로 충분한 저장공간을 확보 Perfect C

한 줄의 입출력 함수 gets, puts Perfect C 함수를 이용하려면 헤더 파일 stdio.h 파일을 포함 함수 gets()는 입력 받은 한 줄을 인자로 기술하는 문자 배열에 저장하는 함수 그러므로 인자 배열의 크기는 표준입력 한 줄의 문자가 모두 입력되고 마지막에 널 문자가 입력되도록 충분히 커야 함 예제 12-7 char line[81]; gets(line); puts(line); Perfect C

프로그램 연습 Perfect C 프로그램 목적 이 단원에서 배운 배열을 이용하여 배열 원소의 총합과 평균, 그리고 원소의 출현 빈도수를 계산하는 프로그램 0에서부터 9까지의 60 개의 수를 배열에 저장, 이 배열을 적당히 출력 배열 원소 60 개 수의 평균을 구하여 출력 배열 원소 60 개에서 각 수가 저장된 빈도 수를 세어서 이를 다음 결과 그림과 같이 막대 그래프 형식으로 출력 가장 빈도 수가 많은 수와 빈도 횟수를 출력 함수는 main()과 함수 printArray(), mean(), mode()로 구성 Perfect C

구현 함수 구성 이용 배열 Perfect C int frequency[10] = { 0 }; 이 프로그램은 함수 main()과 printArray(), mean(), mode()로 구성 배열의 출력을 위한 함수 printArray()와 배열의 총합과 평균을 구하는 함수 mean(), 그리고 분포를 조사하여 히스토그램을 그리는 함수 mode()를 구현 이용 배열 함수 main()에서 배열 변수 frequency[]와 response[]를 선언 함수 main()에서 함수 세 개를 호출하면 프로그램은 완성 int frequency[10] = { 0 }; int response[SIZE] = { 5, 6, 7, 2, 5, 3, 9, 4, 6, 4, 4, 8, 0, 6, 3, 7, 0, 2, 0, 8, 7, 8, 0, 5, 8, 7, 3, 9, 7, 8, 3, 5, 2, 9, 7, 5, 3, 8, 7, 2, 7, 4, 7, 2, 5, 3, 8, 7, 5, 6, 4, 7, 6, 1, 6, 5, 7, 7, 7, 6 }; void prntArray(int a[]); void mode(frequency, response); void mean(int answer[]) Perfect C

Perfect C 배열의 원소를 모두 더하는 문장 for (j = 0; j < SIZE; j++) total += response[j]; 분포 수 구하여 출력하는 문장 for (rating = 0; rating <= 9; rating++) freq[rating] = 0; //초기화 ++freq[response[j]]; //분포수 구함 for (rating =0; rating <= 9; rating++) { printf(“%10d%10d%s”, rating, freq[rating], “ “); if (freq[rating] > largest) largest = freq[rating]; //가장 많은 분포수 modeValue = rating; //가장 많은 분포가 나온 숫자 } for (h = 1; h <= freq[rating]; h++) printf( “*” ); printf( “\n” ); printf(“가장 많은 빈도수의 수 : %d - %d 번 나타남”, modeValue, largest); Perfect C

이해점검 Perfect C 동일한 자료형을 연속된 저장공간에 할당하여 이용하는 자료구조를 (배열 )이라 한다. 동일한 자료형을 연속된 저장공간에 할당하여 이용하는 자료구조를 (배열 )이라 한다. 배열의 각 원소를 참조하는데 이용되는 수를 (첨자,index )라 한다. 배열 크기가 n이면 이용될 수 있는 첨자는(0)에서부터 (n-1)까지다. 배열의 주요 요소는 (자료형), 배열이름, 그리고 배열의 크기이다. 배열의 초기화(initialization) 구문은 다음과 같이 중괄호를 이용하며, (배열의 크기)(은)는 생략할 수 있다. 한 줄의 표준입력을 문자열로 입력 받는 함수는 (puts)이다. 문자열 저장 구조는 자료형 (char)의 배열 구조를 이용한다. 문자열의 저장 구조에서 항상 문자열의 마지막에는 (null) 문자가 들어있다. Perfect C

이해점검 초기화에서 배열의 크기를 지정하는 경우, 지정된 배열의 크기가 초기 값 개수보다 크면 나머지 지정되지 않은 원소의 초기 값은 자동으로 모두 1로 저장된다. (x, 0으로 저장됨) 이차원 배열을 선언하는 경우, 초기화를 하지 않고 선언만 한다면 배열의 크기는 행과 열, 두 개 모두 반드시 지정되어야 한다. (o) 이차원 배열인 경우, 선언을 하면서 초기 값을 저장하면 첫 번째 크기인 행의 크기는 지정하지 않을 수 있다. 다차원 배열을 인자로 이용하는 경우, 함수 원형과 함수 정의의 헤더에서 배열의 첫 번째 크기를 제외한 다른 모든 크기는 반드시 기술되어야 한다. 문자열은 널(NULL) 문자(\0)가 문자 배열의 마지막에 저장된다. 그러므로 문자열을 저장하는 배열의 크기는 반드시 저장되는 문자의 갯수보다 1이 커야 한다. o Perfect C

프로그래밍 과제 실습 12장 1, 2, 5, 6, 8, 9 Perfect C