Presentation is loading. Please wait.

Presentation is loading. Please wait.

배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥.

Similar presentations


Presentation on theme: "배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥."— Presentation transcript:

1 배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥

2 2차원 배열

3 a a a b b c c d d a[0] a[1] a[2] a[3] a[4] a[0] a[1] a[2] a[3] a[4]

4 2차원 배열 정의 : 2개의 첨자를 갖는 배열 자료형 배열명[행의 수][열의 수]; 예 : int a[4][5]; 형식 0 행
자료형 배열명[행의 수][열의 수]; 예 : int a[4][5]; 0 행 a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] 1 행 a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] 2 행 a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] 3 행 a[3][0] a[3][1] a[3][2] a[3][3] a[3][4] 0 열 1 열 2 열 3 열 4 열 a[0] a[1] a[2] a[3]

5 a[0][0] 1 a[0][1] 2 a[0][2] 3 a[1][0] 4 a[1][1] 5 a[1][2] 6 a[2][0] 7 a[2][1] 8 a[2][2] 9

6 1 2 3 4 5 6 7 8 9 1) 2) 1 1 3)

7 2차원 배열 int a[2][3]; a[0][0]=70; a[0][1]=33; a[0][2]=26; 2차원 배열 선언
2차원 배열에 저장

8 2차원 배열과 초기화 int a[2][3]={{70, 33, 26}, {15, 33, 88}};

9 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j, a[2][3]={3,2,7,6,9,8}; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

10 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j, a[2][3]={{3,2,7}, {6,9,8}}; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

11 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j, a[2][3]={3,2,7,6}; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

12 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j, a[2][3]={3,}; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

13 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j, a[2][3]={{3,}, {6,5,3}}; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

14 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j, a[][3]={{3,2,7}, {6,9,8}}; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

15 2차원 배열과 초기화 #include<stdio.h> int main(){ int i, j; static int a[2][3]; for(i=0; i<2; i++){ for(j=0; j<3; j++){ printf("%5d", a[i][j]); printf(“\n”); }

16 2차원 배열과 초기화 #include <stdio.h> void main(void) { static int a[2][3] = {{70, 33, 26},{15, 33, 88}}; int i, j; for(i=0; i<2; i++) { for(j=0; j<3; j++) printf("%3d", a[i][j]); printf("\n"); }

17 2차원 배열의 합 구하기 #include <stdio.h> void main(void){ static int a[2][3] = {{1, 2, 3},{4, 5, 6}}; int i, j, sum=0; for(i=0; i<2; i++) for(j=0; j<3; j++) sum += a[i][j]; printf("sum=%d", sum); // 결과 출력 }

18 2차원 배열의 합구하기 국어 영어 수학 프밍 합계 5 6 7 8 9 1 4 2 3 합계

19 #include <stdio.h> void main(void) { int i, j; int a[5][5] = {{1,2,3,4},{5,6,7,8}, {9,10,11,12},{13,14,15,16}}; for(i=0; i<4; i++){ for(j=0; j<4; j++){ a[i][4] += a[i][j]; a[4][i] += a[j][i]; } a[4][4] += a[i][4]; for(i=0; i<5; i++){ for(j=0; j<5; j++) printf("%5d", a[i][j]); printf("\n");

20 행렬 a와 b의 합과 곱 a b 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 a+b a*b

21 #include <stdio.h> void main(void) { int a[3][3] = {{1, 5, 6}, {2, 4, 7}, {2, 5, 8}}; int b[3][3] = {{7, 1, 6}, {3, 4, 7}, {4, 6, 3}}; int c[3][3] = {0,}, d[3][3], i, j, k; // 합 계산 for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) ( ) // 곱 계산 for (k = 0; k < 3; k++) // 결과 출력 printf("합\n"); for (i = 0; i < 3; i++) { printf("%3d", d[i][j]); printf("\n"); } printf("곱\n"); printf("%3d", c[i][j]);

22 익힘문제 p160 문제 4-1 1 2 6 3 7 10 4 8 11 13 5 9 12 14 15 1 2 3 4

23 프로그램 #include <stdio.h> void main() { static int a[5][5];//={0, }; int i, j, n=1; for(i=0; i<5; i++) { for(j=i; j<5; j++) { a[j][i]=n++; } for(i=0; i<5; i++){ for(j=0; j<5; j++ ) { // j<=i; if(a[i][j]!=0) printf("%3d", a[i][j]); printf("\n");

24 익힘문제 p160 문제 4-2 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25 1 2 3 4

25 #include <stdio.h> void main() { static int a[5][5];//={0, }; int i, j, n=1; for(i=0; i<5; i++) { for(j=0; j<5; j++) { if(i%2==0) a[i][j]=n++; else a[i][4-j]=n++; } for(i=0; i<5; i++){ for(j=0; j<5; j++ ) { // j<=i; if(a[i][j]!=0) printf("%3d", a[i][j]); printf("\n");

26 익힘문제 p160 문제 4-3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4

27 프로그램 #include <stdio.h> void main() { static int a[5][5];//={0, }; int i, j, n=1; for(i=0; i<5; i++) { for(j=0; j<5-i; j++) { a[i][j]=n++; } for(i=0; i<5; i++){ for(j=0; j<5; j++ ) { // j<=i; if(a[i][j]!=0) printf("%3d", a[i][j]); printf("\n");

28 문자 배열

29 문자배열 문자열을 저장하기 위한 배열 S u n r i \0 char a[7]; char a[2][9]; S u n r i
t e

30 문자배열 초기화 char a[]="sunrin"; char b[3][5]={"Lee", "Park", "Kim"}; s u n
\0 L e \0 P a r k i m

31 실습 #include <stdio.h> void main(){ char c[6]="sunrin";
printf("%s", c); } 출력 결과는? 에러 : c배열범위 오버플로우입니다

32 실습 #include <stdio.h> void main(){ char c[]="SunRin";
printf("%s\n", &c[0]); printf("%s\n", &c[3]); } 출력 결과는? SunRin Rin

33 실습 문자배열에 “ABCDEFGHIJ”를 입력하고 다음과 같이 출력 ABCDEFGHIJ BCDEFGHIJ CDEFGHIJ

34 문제 7-16 #include <stdio.h> void main() { int i; char a[]="ABCDEFGHIJ" ; for( i=0; i<10; i++ ) { printf("%s\n", &a[i]); }

35 실습 7-17 #include <stdio.h> void main() { char c[20]; printf("Enter your name : " ); scanf("%s", c); printf("Oh! You are %s.\n", c); } Yoo soon ok Yoo

36 문제 1 강나래 100 2 김기태 89 3 이강민 96 배열을 이용하여 ‘번호 이름 점수’를 초기화하여 입력한 출력
배열을 이용하여 ‘번호 이름 점수’를 초기화하여 입력한 출력 두개의 배열(문자, 숫자) 사용 name[3][10] 0열 1열 2열 0 행 a[0][0] name[0][1] a[0][2] 1 행 a[1][0] name[1][1] a[1][2] 2 행 a[2][0] name[2][1] a[2][2] 1 강나래 김기태 89 3 이강민 96 a[3][2]

37 프로그램 #include <stdio.h> void main() { int i, data[3][2]={{1, 100},{2, 99},{3, 95}}; char name[3][5]={"Lee", "Park", "Kim"}; // 출력 for(i=0; i<3; i++) printf("%5d %10s %5d\n",data[i][0], name[i], data[i][1] ); // data[0][0], name[0], data[0][1] // data[1][0], name[1], data[1][1] // data[2][0], name[2], data[2][1] }

38 대소문자 변환 입력 출력 배열에 문자열을 입력하고, 입력한 영문자의 대문자는 소문자로 소문자는 대문자로 변환하여라. S u n
R i \0 출력 s U N r I \0

39 프로그램 #include <stdio.h> #include <conio.h> void main(){ char c[255]; int i = -1; clrscr(); // 화면 지우기 printf("\nInput String = "); gets(c); // 문자열 입력 while (c[++i] != '\0') { if (c[i] >= 'A' && c[i] <= 'Z') // 대문자를 소문자로 바꿈 c[i] += 32; else if (c[i] >= ‘a' && c[i] <= ‘z') c[i] -= 32; } puts(c); // 문자열 출력

40 nirnus s u n r i 문자열 길이 구하기 입력 출력 배열에 문자를 입력하고 역순으로 출력하여라. i \0 1 2 3
1 2 3 4 5 6 7 8 9 10 92 93 94 95 96 97 98 99 s u n r i \0 nirnus 출력

41 프로그램 scanf("%s",c); 명령은 안 되겠죠? while (c[i++] != '\0'); // 문자열의 길이를 구함
#include <stdio.h> void main(){ char c[255]; int i=0; printf("\nInput String : "); gets(c); while (c[i++] != '\0'); // 문자열의 길이를 구함 i--; while(--i >= 0) // 문자열을 역순으로 출력 printf("%c", c[i]); } scanf("%s",c); 명령은 안 되겠죠?

42 10진수 - > 2, 8, 16진수 10진수 입력? 25  n 변환할 진수? 2  b 2 25 8 25 12
--- 1 3 --- 1 2 6 --- 0 2 3 --- 0 16 31 2 1 --- 1 1 --- 15(F)

43 10진수 - > 2, 8, 16진수 c result 16 31 1 --- 15(F) 1 2 3 4 5 6 7 8 9 A
1 2 3 4 5 6 7 8 9 A B C D E F result 1 2 3 4 5 6 7 8 9 10 92 93 94 95 96 97 98 99 1 F \0 뒤쪽 부터 채운다.

44 10진수 - > 2, 8, 16진수 #include <stdio.h> void main() { char c[16]=" ABCDEF", result[100] ; long n; int b, i=100; printf("Decimal=? " ); scanf(“%d", &n); printf("Base=? " ); scanf("%d", &b ); result[--i]='\0' ; // 문자열의 끝을 나타내기 위해서 NULL 문자저장 do { result[--i]=c[n%b]; n /= b; }while( n!= 0 ); printf("result=%s\n", &result[i] ); }

45 문자열 함수 헤더파일 : string.h

46 strlen() 함수 1차원 문자 배열에 저장된 문자들의 길이 구하는 함수
1차원 문자 배열에 저장된 문자들의 길이 구하는 함수 #include <stdio.h> #include <string.h> void main() { int i; char name[3][15]= { "Lee Yeonwoo", "Jang Jungran", "Lee Jamin" } ; for( i=0; i<3; i++ ) { printf("%-15s %3d\n", name[i], strlen( name[i] ) ); }

47 strcpy() 함수 1차원 문자 배열에 저장된 문자열을 복사해주는 함수 #include <stdio.h> #include <string.h> void main() { char a[]="ABCDE"; char b[20]; strcpy( b, a ); printf("a[]=%s\n", a ); printf("b[]=%s\n", b ); } a 배열을 b 배열에 복사

48 strncpy() 함수 1차원 문자 배열에 저장된 문자열을 복사해주는 함수 #include <stdio.h> #include <string.h> void main() { char a[]="ABCDEFGHIJK"; char b[20]="\0"; strncpy( b, a+2, 5); printf("a[]=%s\n", a ); printf("b[]=%s\n", b ); } a[2] a+2부터 5개를 b배열에 복사

49 strcat() 함수 한 문자열 끝에 다른 문자열을 연결하기 위해 사용하는 함수
#include <string.h> #include <stdio.h> void main() { char dest[25]; char blank[]=" ", c[]= "Seoul", d[]="Korea" ; strcpy(dest, c); strcat(dest, blank); strcat(dest, d); printf("%s\n", dest); } 유순옥 ♥ 정보통신과생 dest 배열에 blank 배열을 연결 -> dest배열에 저장

50 strcmp() 함수 ascii 코드표 기준 두 개의 문자열을 비교 하여 같으면 0, 크면 1 작으면 -1 반환
#include <string.h> #include <stdio.h> void main(void) { char a[10], b[10]; int ptr; scanf("%s %s", a, b); ptr = strcmp( a, b ); if (ptr > 0) printf("%s > %s %d\n", a, b, ptr ); else if( ptr==0) printf("%s == %s %d\n", a, b, ptr ); else printf("%s < %s %d\n", a, b, ptr ); } a>b  1, a<b  -1, a==b  0

51 strcpy() 함수를 구현해보기 #include <stdio.h> void main() { char a[]="Sunrin Good", b[20]; int i=0, j=0; printf("%s\n", b); } S u n r i G o d \0

52 strcat() 함수를 구현해보기 #include <stdio.h> void main() { char a[]="Sunrin"; char b[]="Internet"; char result[30]="\0"; int i=0,j=0; while(a[i]!='\0') { result[i]=a[i]; i++; } while(b[j]!='\0') { result[i++]=b[j++]; printf("%s",result);

53 익힘문제 풀기

54 P172 1번 문제 펠린드롬 알고리즘 [이 문제에서의 조건] 공백이 없는 문자 앞으로 읽으나 뒤로 읽으나 같게 읽어지는 문자열
1 2 3 4 M A D 1 2 3 O T

55 규칙성 찾기 1 2 3 4 M A D 1 2 3 O T

56 프로그램 #include <string.h> #include <stdio.h> int main(){ char a[100], b[100]; int i, j=0, n, ok=0; printf("문자열입력:"); gets( a); n=strlen( a ); for(i=0; i<n/2; i++) if(a[i] != a[n-i-1]) { ok=1; break; } if(ok == 1) printf("앞뒤가다른문자열임\n"); else printf("앞뒤가같은문자열임\n");

57 P172 3번 문제 ASCII 코드값 이용 배열의 크기 150으로 한다. b[150]
A(65) ~ Z(90), a(97) ~ z(122) 배열의 크기 150으로 한다. b[150] 예) Ababeab 65 66 90 97 98 99 100 101 b A a b e

58 #include <stdio. h> #include <string
#include <stdio.h> #include <string.h> void main(){ char a[100]; static int b[200]; int i, n; printf("문자열입력: "); gets( a ); n=strlen( a ); for(i=0; i<n; i++){ if(a[i] != ' ') b[a[i]]++; } for(i=0; i<200; i++){ if(b[i] != 0) printf("%c --- %d\n", i, b[i]);

59 배열과 함수

60 배열 원소를 인수로 전달 #include<stdio.h> void sum_fun(int); void main(){ int i, n, a[]={10, 20, 30}; n=sizeof(a)/sizeof(int); for(i=0; i<n; i++) sum_fun( a[i] ); } void sum_fun( int data ){ printf("%d\n", data); 10 20 30 [출력 결과]

61 배열원소 중에서 짝수의 개수 구하기 짝수의 개수 = 4 [출력 결과]
#include <stdio.h> int even( int ); void main() { int a[]={ 3, 1, 7, 6, 3, 9, 8, 2, 6, 7 }; int i, count=0; for(i=0; i<10; i++ ) { count += even( a[i] ); } printf( "짝수의 개수=%d\n", count ); int even( int n ) { if( n%2==0 ) return 1; else return 0; 짝수의 개수 = 4 [출력 결과]

62 배열 전체를 인수로 전달 #include<stdio.h> void sum_fun(int [], int ); void main(){ int n; int a[]={10, 20, 30}; n=sizeof(a)/sizeof(int); sum_fun( a, n ); } void sum_fun(int a[], int n){ int i; for(i=0; i<n; i++) printf("%d\n", a[i]); 10 20 30 [출력 결과]

63 실습 #include<stdio.h> int sum_fun(int a[], int n); //int sum_fun(int [], int ); void main(){ int n, sum; int a[]={10, 20, 30}; n=sizeof(a)/sizeof(int); sum = sum_fun(a, n); printf("%d\n", sum); } int sum_fun( int a[] , int n ) { int i, sum=0; for(i=0; i<n; i++) sum += a[i]; return sum; 60 [출력 결과]

64 배열원소 중에서 짝수의 개수 구하기 짝수의 개수 = 4
#include <stdio.h> int even( int [] ); void main() { int a[]={ 3, 1, 7, 6, 3, 9, 8, 2, 6, 7 }; int n, count=0; n=sizeof(a)/sizeof(int); count = even(a, n); printf( "짝수의개수=%d\n", count ); } int even( int a[], int n) { int i, cnt=0; for(i=0; i<n; i++ ) if( a[i]%2==0 ) cnt++; return cnt; 짝수의 개수 = 4 [출력 결과]

65 1차원 배열 안에 짝수와 홀수의 개수가 몇 개인지 구하는 프로그램
<조건> 함수를 이용한다. 프로그램1. 인수 전달 방법 : 배열 원소를 하나씩 전달 프로그램2. 인수 전달 방법 : 배열 전체를 한꺼번에 전달

66 프로그램 : 배열 원소를 하나씩 전달 짝수의 개수 = 4 홀수의 개수 = 6 [출력 결과]
#include <stdio.h> int even_odd( int ); void main() { int a[]={ 3, 1, 7, 6, 3, 9, 8, 2, 6, 7 }; int i, check, cnt_even=0, cnt_odd=0; for(i=0; i<10; i++ ) { check = even_odd( a[i] ); if (check == 1) cnt_even++; else cnt_odd++; } printf( "짝수의개수=%d\n", cnt_even ); printf( "홀수의개수=%d\n", cnt_odd ); int even_odd( int n ) { if( n%2==0 ) return 1; return 0; 짝수의 개수 = 4 홀수의 개수 = 6 [출력 결과]

67 프로그램 : 배열 전체를 전달 짝수의 개수 = 4 홀수의 개수 = 6 [출력 결과]
#include <stdio.h> int odd( int [] , int); int even( int [] , int); void main() { int a[]={ 3, 1, 7, 6, 3, 9, 8, 2, 6, 7 }; int n, cnt_even=0, cnt_odd=0; n=sizeof(a)/sizeof(int); cnt_even = even( a,n ); cnt_odd = odd( a ,n); printf( "짝수의개수=%d\n", cnt_even ); printf( "홀수의개수=%d\n", cnt_odd ); } int even( int a[] , int n) { int i, cnt=0; for(i=0; i<n; i++ ) if( a[i]%2==0 ) cnt++; return cnt; int odd( int a[] , int n) { if( a[i]%2==1 ) cnt++; 짝수의 개수 = 4 홀수의 개수 = 6 [출력 결과]

68 홀짝의 개수 구하기 #include <stdio.h> void even_odd( int [] , int , int* , int* ); void main() { int a[]={ 3, 1, 7, 6, 3, 9, 8, 2, 6, 7 }; int n, cnt_even=0, cnt_odd=0; n=sizeof(a)/sizeof(int); even_odd( a, n, &cnt_even, &cnt_odd ); printf( "짝수의개수=%d\n", cnt_even ); printf( "홀수의개수=%d\n", cnt_odd ); } void even_odd( int a[], int n, int* cnt_even, int* cnt_odd) { int i, cnt=0; for(i=0; i<n; i++ ) if( a[i]%2==0 ) (*cnt_even)++; else (*cnt_odd)++;

69 검색 프로그램(함수 처리)

70 선형 검색_main()함수 찾은 경우 a[5]=25 못 찾은 경우 찾고자 하는 값이 없다…
#include<stdio.h> int linear_search(int [], int , int ); void main(){ int i, key, find, count; int a[]= {15, 12, 22, 30, 17, 25, 5, 7, 52, 32, 55}; count=sizeof(a)/sizeof(int); // 배열의 크기 printf("배열a[]: "); for(i=0; i<count; i++) printf("%5d", a[i]); printf("\n"); printf(" 찾고자하는데이터? "); scanf("%d", &key); find = linear_search(a, count, key); if(find >= 0) printf(“a[%d] = %d", find, a[find]); else printf("찾고자하는값이없다..."); } 찾은 경우 a[5]=25 못 찾은 경우 찾고자 하는 값이 없다…

71 선형 검색_검색함수 int linear_search(int a[], int n, int key){ int i;
for(i=0; i<n; i++) if( a[i] == key) return i; return -1; }

72 이진 검색_main()함수 #include<stdio.h> int binary_search(int a[], int n, int key); void bubble_sort(int a[], int count); void main(){ int i, key, find, count; int a[]= {15, 12, 22, 30, 17, 25, 5, 7, 52, 32, 55}; count=sizeof(a)/sizeof(int); printf("정렬전배열a[]: \n"); for(i=0; i<count; i++) printf("%5d", a[i]); printf("\n"); // 정렬 함수 호출 bubble_sort(a, count); printf(" 정렬후배열a[] : \n"); printf(" 찾고자하는데이터? "); scanf("%d", &key); // 이진검색 함수 호출 find = binary_search(a, count, key); if(find < 0) printf("찾고자하는값이없다... "); else printf("array[%d] = %d", find, a[find]); }

73 이진검색_정렬 함수 void bubble_sort(int a[], int count){ int i, j, k, temp; for(i=1; i<count; i++){ for(j=0; j<count-i; j++){ if(a[j] > a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }

74 이진검색_검색 함수 int binary_search(int a[], int n, int key){ int left, right, middle; left = 0; right = n-1; while(left <= right){ middle = (left + right)/2; if( key > a[middle] ) left = middle +1; else if( key < a[middle] ) right = middle - 1; else return middle; } return -1;

75 이차원 배열_매개변수 전달 함수 선언 함수 호출 함수 정의 int sum(int [][4]); re = sum(a);
int sum(int a[][4]){ // 프로그램 작성 }

76 프로그램 작성 #include <stdio.h> void prt(int [][4]); // 선언 void main() { int a[][4]={ {3,1,7,9}, {6,3,1,5}, {8,2,6,7}}; prt(a); // 호출 } void prt(int a[][4]){ // 정의 int i, j; for(i=0; i<3; i++){ for(j=0; j<4; j++) printf("%3d", a[i][j]); printf("\n");

77 프로그램 작성 배열 원소들의 합 = OOO 2차원 배열 전체를 함수에 전달하여 각 원소의 합을 구하시오. 100 90 95
98 99 75 87 85 97 배열 원소들의 합 = OOO

78 배열 원소들의 합_ prog1 #include <stdio.h> int sum(int [][4]); void main() { int a[][4]={ {3,1,7,9}, {6,3,1,9}, {8,2,6,9}}; int tot; tot=sum(a); printf("배열 원소들의 합= %d", tot); } int sum(int a[][4]){ int i, j, tot=0; for(i=0; i<3; i++) for(j=0; j<4; j++) tot += a[i][j]; return tot;

79 배열 원소들의 합_ prog2 #include <stdio.h> int sum(int [][4], int, int); void main() { int a[][4]={ {3,1,7,9}, {6,3,1,9}, {8,2,6,9}}; int tot, m, n; n=sizeof(a[0])/sizeof(int);//열의 수 구하기 - 4열 m=sizeof(a)/sizeof(int)/n; // 행의 수 구하기 - 3행 tot=sum(a, m, n); printf("배열원소들의합= %d", tot); } int sum(int a[][4], int m, int n){ int i, j, tot=0; for(i=0; i<m; i++) for(j=0; j<n; j++) tot += a[i][j]; return tot;

80 프로그램 작성 3명 학생의 이름과 국어 영어 수학 점수를 입력하고 총점과 평균을 구하는 프로그램을 작성하여라.
함수1 : 총점을 구하는 함수 함수2 : 평균(소수점 1자리)을 구하는 함수 printf()문 [실행 결과] 이름 국어 영어 수학 총점 평균 김나라 이정민 한준수 2차원배열 1차원배열

81 #include<stdio.h> void avg_fun(float[],int [][4]); void sum_fun(int [][4]); void main(){ char name[3][15] = {"김나라","이정민","한준수"}; int score[3][4] = {{89,95,98,0}, {90,88,100,0}, {95,96,93,0}}; float avg[3]; int i,j; printf("이름국어 영어 수학총점평균\n"); sum_fun(score); avg_fun(avg,score); for(i=0;i<3;i++) { printf("%s",name[i]); for(j=0;j<4;j++){ printf("%5d",score[i][j]); } printf("%5.1f\n",avg[i]); void avg_fun(float avg[],int score[][4]){ avg[i] = (float)score[i][3]/3.0; void sum_fun(int score[][4]){ for(i=0;i<3;i++){ for(j=0;j<3;j++){ score[i][3] += score[i][j];

82 #include <stdio.h> void sum(int arr[][4], int i, int j); void av(int sum, float ave[], int a); int main() { char name[3][10] = {"김나라","이정민","한준수"}; int data[3][4] = {{89,95,98,0},{90,88,100,0},{95,96,93,0}}; float ave[3]; int i; int s, t; printf("result\n"); printf(" 이름 국어 영어 수학 총점 평균\n"); sum(data,3,4); for(i=0;i<3;i++) av(data[i][3],ave,i); } printf("%s",name[i]); for(t=0;t<4;t++) printf(" %d ",data[i][t]); printf(" %.2f\n",ave[i]); void sum(int arr[][4], int i, int j) int m,n; for(m=0;m<i;m++) for(n=0;n<j-1;n++) arr[m][3] += arr[m][n]; void av(int sum, float ave[], int a) ave[a] = (float)sum/3;

83 #include <stdio.h> int aa(int []); void bb(int [3], float [3]); void main(){ char st[3][7]={{"김나라"},{"이정민"},{"한준수"}}; int a[][4]={{89,95,98},{90,88,100},{95,96,93},}; int i,tot; printf("이름 국어영어전산총점평균\n"); for(i=0;i<3;i++){ printf("%s",st[i]); printf("%4d %4d %4d ", a[i][0], a[i][1], a[i][2]); tot=aa(a[i]); printf("%4d",tot); printf("%6.1f\n", (float)tot/3); } int aa(int a[]){ int i,sum=0; sum+=a[i]; return sum;

84 익힘문제 p181

85


Download ppt "배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥."

Similar presentations


Ads by Google