int data data 10 data 1 data 2

  • Slides: 93
Download presentation

데이터 선언과 기억장소 int data; data 10명의 점수를 저장한다면 변수명은 몇 개 필요할까요? 만약

데이터 선언과 기억장소 int data; data 10명의 점수를 저장한다면 변수명은 몇 개 필요할까요? 만약 data 1 data 2 data 3 data 4 data 5 data 6 data 7 data 8 data 9 data 10

1차원 배열의 초기화 #include<stdio. h> int main(){ int i, a[]={3, 2, 7, 6, 9};

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

1차원 배열의 초기화 #include<stdio. h> int main(){ int i, a[]={3, 6, 2}; for(i=0; i<5;

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

1차원 배열의 초기화 #include<stdio. h> int main(){ int i, a[5]={5, 8, 3}; for(i=0; i<5;

1차원 배열의 초기화 #include<stdio. h> int main(){ int i, a[5]={5, 8, 3}; for(i=0; i<5; i++){ printf("%5 d", a[i]); } } 5 8 3 0 0

1차원 배열의 초기화 #include<stdio. h> int main(){ int i, a[5]={4, }; for(i=0; i<5; i++){

1차원 배열의 초기화 #include<stdio. h> int main(){ int i, a[5]={4, }; for(i=0; i<5; i++){ printf("%5 d", a[i]); } } 4 0 0

1차원 배열의 초기화 #include<stdio. h> int main(){ int i; int a[5]; for(i=0; i<5; i++){

1차원 배열의 초기화 #include<stdio. h> int main(){ int i; int a[5]; for(i=0; i<5; i++){ printf("%5 d", a[i]); } } 쓰 레 기 값 짱

1차원 배열의 초기화 #include<stdio. h> int main(){ int i; static int a[5]; for(i=0; i<5;

1차원 배열의 초기화 #include<stdio. h> int main(){ int i; static int a[5]; for(i=0; i<5; i++){ printf("%5 d", a[i]); } } 0 0 0

실습 #include <stdio. h> void prt_array(int a[]); void main(){ int a[5]; int b[5]={0}; void

실습 #include <stdio. h> void prt_array(int a[]); void main(){ int a[5]; int b[5]={0}; void prt_array(int a[]){ int c[5]={0, }; int d[5]={1, 2, 3}; int i; int e[5]={4, 5, 6, 7, 8}; for(i=0; i<=4; i++) prt_array(a); // 배열의 값을 출력하는 함수 printf("%5 d", a[i]); prt_array(b); printf("n"); prt_array(c); } prt_array(d); prt_array(e); }

[ 문제 ] 10 개의 데이터 ( 정수 ) 를 초기화하고 합을 구 하여라.

[ 문제 ] 10 개의 데이터 ( 정수 ) 를 초기화하고 합을 구 하여라. #include <stdio. h> void main() { int i, a[10]={ 3, 7, 6, 4, 8, 9, 12, 2, 10, 1 }; int sum=0; for(i=0; i<10; i++) { sum+=a[i]; } printf("sum=%dn", sum); }

[ 문제 ] 10 개의 데이터를 초기화하고 홀수 데이터의 합을 출력하여라. #include <stdio. h>

[ 문제 ] 10 개의 데이터를 초기화하고 홀수 데이터의 합을 출력하여라. #include <stdio. h> void main() { int i, a[10]={ 3, 7, 6, 4, 8, 9, 12, 2, 10, 1 }; int sum=0; for(i=0; i<10; i++) { if(a[i]%2 ) sum+=a[i]; } printf("sum=%dn", sum); }

[ 문제 ] 10 개의 데이터를 초기화하고 홀수 데이터의 합을 출력하여라. #include <stdio. h>

[ 문제 ] 10 개의 데이터를 초기화하고 홀수 데이터의 합을 출력하여라. #include <stdio. h> Int odd( int a[]){ int odd( int []); int i, sum=0; void main() { for(i=0; i<10; i++) { if(a[i]%2 int a[10]={ 3, 7, 6, 4, 8, 9, 12, 2, 10, 1 }; ) sum+=a[i]; } int sum=0; return sum; sum=odd(a); } printf("sum=%dn", sum); }

실습 #include<stdio. h> void main() { int i, a[10]={0, 1}; for(i=2; i<10; i++) {

실습 #include<stdio. h> void main() { int i, a[10]={0, 1}; for(i=2; i<10; i++) { a[i] = a[i-2] + a[i-1]; } for(i=0; i<10; i++) { printf("a[%d] = %dn", i, a[i]); } }

1~100까지의 수 중에서 솟수 구하기 #include <stdio. h> void main() { int i, j,

1~100까지의 수 중에서 솟수 구하기 #include <stdio. h> void main() { int i, j, count=0; int num[101]={ 0, }; for( i=2; i<=100; i++ ) { if( num[i]==0 ) { printf("%4 d", i ); count++; if( count%10==0 ) printf("n"); for(j=i; j<=100; j+=i ) { num[j]=1; } }

#include<stdio. h> void main() { int i, j, cnt=0, num[101]; for(i=2; i<=100; i++) //

#include<stdio. h> void main() { int i, j, cnt=0, num[101]; for(i=2; i<=100; i++) // 저장 num[i]=i; //처리 for(i=2; i<=100; i++){ if(num[i]){ cnt++; for(j=i*2; j<=100; j+=i){ num[j]=0; } } } printf("nn 처리한후배열에저장된값"); for(i=2; i<=100; i++){ // 출력 if(num[i]) printf("%5 d", num[i]); } printf("nn 갯수= %d", cnt); } 프로그램

석차구하기 #include<stdio. h> void main(){ int kor[5], eng[5], sum[5]; float avg[5]; int rank[5]={1, 1,

석차구하기 #include<stdio. h> void main(){ int kor[5], eng[5], sum[5]; float avg[5]; int rank[5]={1, 1, 1}; int i, j; //1. 국어영어점수입력 for(i=0; i<5; i++){ scanf("%d %d", &kor[i], &eng[i]); } //2. 총점평균구하기 for(i=0; i<5; i++){ sum[i]=kor[i]+eng[i]; avg[i]=sum[i]/2; } //3. 석차구하기 for(i=0; i<5; i++){ // 기준값 for(j=0; j<5; j++){ // 비교값 if(sum[i] < sum[j]) rank[i]++; } } printf("국어 영어 총점 평균 석차n"); //4. 출력하기 for(i=0; i<5; i++){ printf("%d %d %d %. 1 f %d n", kor[i], eng[i], sum[i], avg[i], rank[i] ); } }

정렬의 종류 삽입 정렬(insertion sort) 선택 정렬(selection sort) 버블 정렬(bubble sort) 퀵 정렬(quick sort)

정렬의 종류 삽입 정렬(insertion sort) 선택 정렬(selection sort) 버블 정렬(bubble sort) 퀵 정렬(quick sort) 쉘 정렬(shell sort) 힙 정렬(heap sort) 병합 정렬(merge sort) 기수 정렬(radix sort) 버킷 정렬(bucket sort) 병합 정렬(merge sort)

선택 정렬(오름차순) 입력자료 step 1 step 2 step 3 step 4 step 5 step

선택 정렬(오름차순) 입력자료 step 1 step 2 step 3 step 4 step 5 step 6 step 7 결과 7 1 6 5 9 3 8 2

선택 정렬(오름차순) 입력자료 step 1 step 2 step 3 step 4 step 5 step

선택 정렬(오름차순) 입력자료 step 1 step 2 step 3 step 4 step 5 step 6 step 7 결과 7 1 6 5 9 3 8 2

선택정렬 void Selection_Sort(int a[], int n){ int i, j; int min, index; for(i=0; i<n-1;

선택정렬 void Selection_Sort(int a[], int n){ int i, j; int min, index; for(i=0; i<n-1; i++){ min = a[i]; index = i; for(j=i+1; j<n; j++){ if(min>a[j]){ min=a[j]; index = j; } } a[index] = a[i]; a[i] = min; } }

버블 정렬 bubble_Sort(int a[], int count){ int i, j, k, temp; for(i=1; i<count; i++){

버블 정렬 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; } }

개선된 버블 정렬 Bubble_Sort(int a[], int count){ int i, j, k, temp, flag; for(i=1;

개선된 버블 정렬 Bubble_Sort(int a[], int count){ int i, j, k, temp, flag; for(i=1; i<count; i++){ flag = 0; 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; flag = 1; } } if(flag == 0) return 1; } return 0; }

삽입 정렬 insertion_Sort(int a[], int count){ int i, j, k, temp; for(i=0; i<count; i++){

삽입 정렬 insertion_Sort(int a[], int count){ int i, j, k, temp; for(i=0; i<count; i++){ temp = a[i]; for(j = i-1; j>=0; j--){ if(temp>= a[j]) break; a[j+1] = a[j]; } a[j+1] = temp; } }

선형 탐색(Linear Search)

선형 탐색(Linear Search)

선형 탐색(Linear Search) int linear_search(int a[], int n, int key){ int i; for(i=0; i<n;

선형 탐색(Linear Search) 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; }

값 22를 찾는 과정 left : 첫 번째 위치 right : 마지막 번째 위치

값 22를 찾는 과정 left : 첫 번째 위치 right : 마지막 번째 위치 5 7 12 15 20 22 25 27 30 45 0 1 2 3 4 5 6 7 8 9 △ ∧ middle left middle : 중간 값 middle = (left + right)/2 = (0 + 9)/2 = 9/2 = 4 ▲ right

값 22를 찾는 과정 left : middle+1 right : 변화없음 5 7 12 15

값 22를 찾는 과정 left : middle+1 right : 변화없음 5 7 12 15 20 22 25 27 30 45 0 1 2 3 4 5 6 7 8 9 ∧ △ △ left middle : 중간 값 middle = (5+9)/2 = 14/2 = 7 ∧ middle ▲ right

값 22를 찾는 과정 left : 변화 없음 right : middle-1 찾고자 하는 값

값 22를 찾는 과정 left : 변화 없음 right : middle-1 찾고자 하는 값 발견 22 25 27 30 45 5 6 7 8 9 △ ▲ ∧ left right ∧ middle : 중간 값 middle = (5+6)/2 = 11/2 = 5 middle ▲ right

이진 검색(Binary Search)

이진 검색(Binary Search)

이진 검색(Binary Search) int binary_search(int a[], int n, int key){ int left, right, middle;

이진 검색(Binary Search) 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; }

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

실습 1) 2) 1 2 3 4 5 6 7 8 9 1 1 1 1 1 3) 1 0 0 0 1

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

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

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j, a[2][3]={3, 2, 7, 6,

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j, a[2][3]={{3, 2, 7}, {6,

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j, a[2][3]={3, 2, 7, 6};

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j, a[2][3]={3, }; for(i=0; i<2;

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j, a[2][3]={{3, }, {6, 5,

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j, a[][3]={{3, 2, 7}, {6,

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 #include<stdio. h> int main(){ int i, j; static int a[2][3]; for(i=0;

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("%5 d", a[i][j]); printf(“n”); } }

2차원 배열과 초기화 및 출력 #include <stdio. h> void main(void) { int a[2][3] =

2차원 배열과 초기화 및 출력 #include <stdio. h> void main(void) { 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("%3 d", a[i][j]); printf("n"); } }

2차원 배열 값들의 합 #include <stdio. h> void main(void){ static int a[2][3] = {{1,

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

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

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

#include <stdio. h> void main(void) { int a[3][3] = {{1, 5, 6}, {2, 4,

#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 (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++) { for (j = 0; j < 3; j++) printf("%3 d", d[i][j]); printf("n"); } printf("곱n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%3 d", c[i][j]); printf("n"); } }

프로그램 #include <stdio. h> #include <conio. h> void main(){ char c[255]; int i =

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

프로그램 #include <stdio. h> void main(){ char c[255]; int i=0; printf("n. Input String :

프로그램 #include <stdio. h> void main(){ char c[255]; int i=0; printf("n. Input String : "); gets(c); while (c[i++] != ''); // 문자열의 길이를 구함 i--; while(--i >= 0) // 문자열을 역순으로 출력 printf("%c", c[i]); }