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

Slides:



Advertisements
Similar presentations
제6장 조건문.
Advertisements

2007 1학기 12 배열.
컴퓨터 개론 및 실습 강의 9.
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
Power C++ 제6장 포인터와 문자열.
배열, 포인터 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
C 개론 정리.
제1장 코드와라이브러리 Page 1 ~ 30 ■■■■■ ■ ■.
C 프로그래밍.
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
제5장 제어명령
C언어: 배열 (Arrays).
6장. printf와 scanf 함수에 대한 고찰
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
7. while 문의 흐름 제어.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express.
Chapter 11 Strings.
6장 배열.
프로그래밍실습 제 16 강.
배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
13. 포인터와 배열! 함께 이해하기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
Chapter 10 함수 기본.
제2장 데이터형과 표준 입출력문 문봉근.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
#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.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
어서와 C언어는 처음이지 제23장.
printf("Global Korea\n");
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Chapter 09. 배열.
배열, 포인터, 함수 Review & 과제 1, 2.
프로그래밍 기법 최적화 프로그래밍.
배열.
11장. 1차원 배열.
Presentation transcript:

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

2차원 배열

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]

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]

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

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

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

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

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”); }

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”); }

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”); }

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”); }

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”); }

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”); }

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”); }

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"); }

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); // 결과 출력 }

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

#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");

행렬 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

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

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

프로그램 #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");

익힘문제 p160 문제 4-2 0 1 2 3 4 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

#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");

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

프로그램 #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");

문자 배열

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

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

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

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

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

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

실습 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

문제 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 강나래 100 2 김기태 89 3 이강민 96 a[3][2]

프로그램 #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] }

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

프로그램 #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); // 문자열 출력

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 출력

프로그램 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); 명령은 안 되겠죠?

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)

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 뒤쪽 부터 채운다.

10진수 - > 2, 8, 16진수 #include <stdio.h> void main() { char c[16]="0123456789ABCDEF", 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] ); }

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

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

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 배열에 복사

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배열에 복사

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배열에 저장

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

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

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

익힘문제 풀기

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

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

프로그램 #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");

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

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

배열과 함수

배열 원소를 인수로 전달 #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 [출력 결과]

배열원소 중에서 짝수의 개수 구하기 짝수의 개수 = 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 [출력 결과]

배열 전체를 인수로 전달 #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 [출력 결과]

실습 #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 [출력 결과]

배열원소 중에서 짝수의 개수 구하기 짝수의 개수 = 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 [출력 결과]

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

프로그램 : 배열 원소를 하나씩 전달 짝수의 개수 = 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 [출력 결과]

프로그램 : 배열 전체를 전달 짝수의 개수 = 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 [출력 결과]

홀짝의 개수 구하기 #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)++;

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

선형 검색_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 못 찾은 경우 찾고자 하는 값이 없다…

선형 검색_검색함수 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; }

이진 검색_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]); }

이진검색_정렬 함수 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; }

이진검색_검색 함수 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;

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

프로그램 작성 #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"); 3 1 7 9 6 3 1 5 8 2 6 7

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

배열 원소들의 합_ 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;

배열 원소들의 합_ 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;

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

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

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

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

익힘문제 p181