1 / 18

멘토링 4 주차

멘토링 4 주차. 11.07.26. a[ 0 ][0][0]. a[ 1 ][0][0]. a[ 0 ][0][1]. a[ 1 ][0][1]. a[ 1 ][0][2]. a[ 0 ][0][2]. a[1][0]. a[ 0 ][1][0]. a[ 0 ][1][1]. a[1][1]. a[1][2]. a[ 0 ][1][2]. 3 차원 배열. 행과 열로 구성된 2 차원 배열이 여러 개 있는 형태 배열선언 형식 자료형 배열명 [ 면크기 ][ 행크기 ][ 열크기 ] 예

upton
Download Presentation

멘토링 4 주차

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 멘토링4주차 11.07.26

  2. a[0][0][0] a[1][0][0] a[0][0][1] a[1][0][1] a[1][0][2] a[0][0][2] a[1][0] a[0][1][0] a[0][1][1] a[1][1] a[1][2] a[0][1][2] 3차원 배열 • 행과 열로 구성된 2차원 배열이 여러 개 있는 형태 • 배열선언 형식 자료형 배열명[면크기][행크기][열크기] • 예 int b[3][4][2] //4개의 행과 2개의 열로 구성된 3개의 배열 • 3차원 배열의 논리적인 구조 int a[2][2][3]; //2면 2행 3열 1면 0면 2행 3열 짜리 2차원 배열 2개 배열

  3. * 배열 용량 : 2 * 2 * 3 * sizeof(int) == 48바이트 110 120 100 90 80 60 70 40 30 20 10 50 a[0][0][0] a[0][0][1] a[0][0][2] a[0][1][0] a[0][1][1] …… a[1][1][2] a[0][0] 0면0행 a[0][1] 0면1행 a[1][0] 1면0행 a[1][1] 1면1행 a[0] (0면) a[1] (1면) int a[2][2][3] = { {{10,20,30}, {40,50,60}}, {{70,80,90}, {100,110,120}} }; 0 면 1 면 3차원 배열의 물리적인 구조 배열

  4. /* 3차원 배열 접근 예 (array3Demo.c)*/ main() { int a[2][2][3] = {{{10,20,30}, {40,50,60}}, {{11,22,33}, {44,55,66}}}; int i, j, k; for (i = 0; i < 2; i++){ for (j = 0; j < 2; j++){ for (k = 0; k < 3; k++){ printf("%3d ", a[i][j][k]); } //for k printf("\n"); } //for j printf("------------\n"); } // for i } 10 20 30 40 50 60 ------------ 11 22 33 44 55 66 ------------ 배열

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

  6. java java 문자열 출력 • 배열이름 • 문자열이 저장된 배열 이름을 이용하여 printf()문을 이용 • 변환문자 %s 배열

  7. 문자열의 끝은 \0 문자 • \0 문자의 효과 • 문자열을 구성하는 각각의 문자를 출력하는 방법 • 출력의 제한을 널(\0) 문자로 검사하면 편리 배열

  8. name[0] ... name[4] H o n g \0 0 3 3 - 2 4 0 - 1 8 6 1 \0 \0 \0 문자열 선언 • 문자열 선언과 초기값 부여 char str[10]; char name[5]=“Hong”; char tel1[]=“011-240-1861”; char tel2[15]=“033-240-1861”; char str[] = “hello”; char str[] = {‘h’,’e’,’l’,’l’,’o’,’\0’}; char *str = “hello”; 배열

  9. char str[] = “Hello”; str 1000 1001 1002 1003 1004 1005 배열명은 포인터 상수 str == &str[0] str[0] str[1] str[2] str[3] str[4] str[5] H H e e l l char *str = “Hello”; 1000 1001 1002 1003 1004 1005 l l o o 1000 \0 \0 str str은 포인터 변수 문자열의 메모리 구조 배열

  10. 문자열 입출력 • 문자열 입력 함수 • scanf(“%s”, str); :단어입력 • gets(str); :문장입력 • 문자열 출력 함수 • printf(“%s\n”, str); • puts(str); //stringDemo1.c #include <stdio.h> int main(void) { char str1[5] = {'h','e','l','l','o'}; char str2[] = {'h','e','l','l','o', '\0'}; char str3[] = "hello"; char *str4 = "hello"; char str5[10]; // str5 = "hello"; //compile error printf("str5 ? "); scanf("%s", str5); // gets(str5); printf("str1=%s\n", str1); printf("str2=%s\n", str2); printf("str3=%s\n", str3); printf("str4=%s\n", str4); printf("str5=%s\n", str5); } str5 ? hello str1=hello儆缺. str2=hello str3=hello str4=hello str5=hello 배열

  11. //scanf, printf를 사용한 문자열 입출력 (stringDemo2.c) #include <stdio.h> int main(void) { char name[30]; //입력할 문자열의 길이를 예상하여 크기 설정 char tel[20]; printf("What's your name?"); scanf("%s", name); //배열이름은 포인터형 상수이므로 scanf에서 ‘&’사용안함 printf("Hello, %s\n", name); printf("What's your phone number?"); scanf("%s", tel); printf(“phone number : %s\n", tel); } What's your name? Hong-gildong Hello, Hong-gildong What's your phone number? 011-101-1010 phone number : 011-101-1010 배열

  12. //gets, puts를 사용한 문자열 입출력 (stringDemo2.c) #include <stdio.h> int main(void) { char name[30]; //입력할 문자열의 길이를 예상하여 선언 char tel[20]; printf("What's your name?\n"); gets(name); //문장입력(공백 포함한 문자열 입력 가능) puts(name); printf("What's your phone number?\n"); gets(tel); put(tel); } What's your name? hong gil dong hong gil dong What's your phone number? 011 222-1010 011 222-1010 배열

  13. // 문자열의 길이를 구하는 프로그램 작성, stringlen.c #include <stdio.h> #define MAX 100 main() { char str[MAX]; int i; printf("문자열 입력 :"); gets(str); i = 0; while(str[i] != ‘\0’) //널 문자를 만날 때까지 문자의 개수를 증가 i++; printf("string length =%d\n", i); } 문자열 입력 :i am happy string length =10 문자열 입력 :한림 string length =4 배열

  14. 연습문제(3) • 하나의 문자열을 입력하여 다른 문자열에 복사하는 프로그램 작성 • 하나의 문자열을 입력 받아 역순으로 출력하는 프로그램 작성 • 두 개의 문자열을 입력하여 첫번째 문자열에 두 번째 문자열을 연결하는 프로그램 작성 문자열 입력 :good morning source : good morning reverse : gninrom doog 첫번째 문자열 입력 :hallym 두번째 문자열 입력 :university result : hallymuniversity 배열

  15. 문자열 함수 문자열 처리를 위한 라이브러리함수<string.h> • strlen : 문자열 길이 len = strlen(str); //str의 문자길이를 len에 대입, • strcat : 문자열 결합 strcat(str1, str2); // str1 = str1 + str2 • strcpy : 문자열 복사 strcpy(des,src); //des = src • strrev : 문자열의 문자들의 순서를 바꾸는 함수 str2 = strrev(str1); • strcmp : 문자열 비교 r = strcmp(str1,str2) ; //str1 == str2 => r = 0 //str1 > str2 => r > 0 (양수) //str1 < str2 => r < 0 (음수) • 문자열 변환 str2 = strupr(str); //대문자로 변환 str2 = strlwr(str); //소문자로 변환 f = atof(str); //문자열을 실수로 변환 <stdlib.h> i = atoi(str); //문자열을 정수로 변환 <stdlib.h> 배열

  16. 문자열 함수 예 //strringfun1.c #include <stdio.h> #include <string.h> main(){ char str1[30]="hallym "; char str2[11]="University"; char str3[30]; printf ("str1 = %s\n", str1); printf ("str1 length = %d, str1 size = %d\n", strlen(str1), sizeof(str1)); printf ("str2 = %s\n", str2); printf ("str2 length = %d\n", strlen(str2)); printf ("strcat(str1,str2) = %s\n", strcat(str1,str2)); printf ("str1 = %s\n", str1); printf ("strcpy(str3,str1) = %s\n", strcpy(str3,str1)); printf ("str3 = %s\n", str3); printf ("strrev(str3) = %s\n", strrev(str3)); } str1 = hallym str1 length = 7, str1 size = 30 str2 = University str2 length = 10 strcat(str1,str2) = hallym University str1 = hallym University strcpy(str3,str1) = hallym University str3 = hallym University strrev(str3) = ytisrevinU myllah 배열

  17. // ID와 Password를 입력하여 출력하는 프로그램 작성, stringfun2.c #include <stdio.h> #include <string.h> void main() { char id[9]; char pwd[9]; int quit = 0; while(1){ quit = 0; do{ printf("ID입력(8자까지 입력가능, quit-종료):"); gets(id); if (strcmp(id, "quit") == 0) return ; }while (strlen(id) > 8); do { printf("PASSWORD 입력(8자까지 입력가능, quit-종료):"); gets(pwd); if (strcmp(pwd, "quit") == 0) return ; }while (strlen(pwd) > 8); printf("ID:%s, PASSWORD:%s\n", id, pwd); }//while } //main ID입력(8자까지 입력가능, quit-종료):kim PASSWORD 입력(8자까지 입력가능, quit-종료):kim12345 ID:kim, PASSWORD:kim12345 ID입력(8자까지 입력가능, quit-종료):lee PASSWORD 입력(8자까지 입력가능, quit-종료):lee12345678 PASSWORD 입력(8자까지 입력가능, quit-종료):lee1111 ID:lee, PASSWORD:lee1111 ID입력(8자까지 입력가능, quit-종료):quit 배열

  18. //"quit"를 입력할 때까지 점수를 반복 입력하여 총점, 평균 계산, stringfun3.c #include <stdlib.h> void main() { char score[5]; float sum=0.0; float avg; int count = 1; while(1){ printf("%d번 점수입력(quit-종료):", count); gets(score); if (strcmp(strlwr(score), "quit") == 0) break; //소문자로 비교 count++; sum += atof(score); //문자열을 실수로 변환 } avg = sum / count; printf("인원 : %d \n", count); printf("총점 : %.2f \n", sum); printf("평균 : %.2f \n", avg); } 1번 점수입력(quit-종료):100 2번 점수입력(quit-종료):80 3번 점수입력(quit-종료):90 4번 점수입력(quit-종료):99 5번 점수입력(quit-종료):85 6번 점수입력(quit-종료):100 7번 점수입력(quit-종료):quit 인원 : 6 총점 : 554.00 평균 : 92.33 배열

More Related