▩ 배열의 개념과 1차원 배열


   - 같은 데이터형을 가진 데이터들의 집합
   - 데이터의 형태가 집합적인 형태를 가지면서 같은 처리 방식을 가질 경우 사용
   - 배열은 인덱스를 이용하여 각 요소가 구분됨
   - 배열의 인덱스는 0부터 n-1까지 사용함
   - 배열 처리시 일반적으로 for문을 1개 정도 동반함
   - 배열의 선언:
     . int arr[5]; - 5개의 정수를 저장할 수 있는 배열을 선언합니다.
     . int arr[5] = {1,2,3,4,5};
       5개의 정수를 저장할 수 있는 배열을 선언하면서 5개의 정수를 배열에 저장합니다.

1. 배열에 값을 저장한 다음 출력하는 일반적인 프로그램

 #include <stdio.h>
 #include <conio.h>

 void main() {
   int i;
   int arr[10];

   for(i=0; i<10; i++)
      arr[i]=i;

   for(i=0; i<10; i++)
      printf("arr[%d] = %d\n", i, arr[i]);
   getch();
 } 




▩ 1차원 배열, 2차원 배열 예제



>>>>> 1차원 배열의 사용


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int k;
   int arr[10];

   for(k=0; k<10; k++)
      arr[k]=k;

   for(k=0; k<10; k++)
      printf("arr[%d] = %d\n", k, arr[k]);
   getch();
 }


UP!!!▷ 배열에 들어가는 값이 1부터 10이 되도록 수정하세요.


UP!!!▷ tot란 변수에 배열의 모든 값의 합을 구해서 출력해 보세요.


UP!!!▷ 배열에 들어가 있는 값중에 짝수인 수들의 합을 구해서 출력해 보세요.



>>>>> 영어 대문자를 배열에 저장하고, 역순으로 출력하는 프로그램


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int k;
   char alpha[26];

   for(k=65; k<=90; k++){
      alpha[k-65]=k;
   }

   for(k=90; k>=65; k--){
      printf("alpha[%d] = %c\n", k-65, alpha[k-65]);
   }
   getch();
 }


UP!!!▷ 알파벳이 Z부터 역으로 5개씩 출력되는 프로그램으로 수정하세요.


UP!!!▷ 알파벳이 A부터 5개씩 출력되는 프로그램으로 수정하세요.




▩ 최대/최소값 추출의 원리


   - MAX변수에는 최소값을 초기값으로 준다.
   - MIN변수에는 최대값을 초기값으로 준다.
     0 ~ 3000 사이의 데이터를 기준으로 한다면 max=0, min=3000으로 주어야 한다.

   - if문을 이용하여 최대값보다 큰 값이 나타나면 최대값에 새로운 값을 대입한다.
     if (max < readData) max = readData;

   - if문을 이용하여 최소값보다 작은 값이 나타나면 최소값에 새로운 값을 대입한다.
     if (min > readData) min = readData;



>>>>> 배열의 이용(입력 수의 범위:0~3000)


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int i, mx_cn=1, mn_cn=1;
   int max=0, min=3000;
   int jum[5];

   for(i=0; i<5; i++) {
      printf("%d번째 수를 입력하세요 : ", i+1);
      scanf("%d", &jum[i]);
   }

   for(i=0; i<5; i++) {
      if(jum[i]>max) {
  max=jum[i];
  mx_cn=i+1;
      }
      if(jum[i]<min) {
  min=jum[i];
  mn_cn=i+1;
      }
   }
   printf("\n");
   printf("최대값 : %d, 입력번호 : %d\n", max, mx_cn);
   printf("최소값 : %d, 입력번호 : %d\n", min, mn_cn);
   getch();
 }



>>>>> 배열의 크기


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int k;
   int num[] = {25, 36, 45, 45};
   char alpha[] = {'A', 'B', 'E'};

   for(k=0; k<4; k++)
      printf("배열 num[%d]의 크기 : %d\n", k, sizeof num[k]);
      printf("배열 num의 크기 : %d\n", sizeof(num));

   for(k=0;k<3;k++)
      printf("배열 alpha[%d]의 크기 : %d\n", k, sizeof alpha[k]);
      printf("배열 alpha의 크기 : %d\n", sizeof(alpha));
   getch();
 }




>>>>> 문자열의 초기화


 #include <stdio.h>
 #include <conio.h>

 void main() {
   char alpha1[] = {'A', 'B', 'C', 'D', 'E'};
   char alpha2[] = {'A', 'B', 'C', 'D', 'E', '\0'};
   char alpha3[] = "ABCDE";

   printf("배열 alpha1의 내용 : %s\n", alpha1);
   printf("배열 alpha1의 크기 : %d\n", sizeof(alpha1));
   printf("\n");
   printf("배열 alpha2의 내용 : %s\n", alpha2);
   printf("배열 alpha2의 크기 : %d\n", sizeof(alpha2));
   printf("\n");
   printf("배열 alpha3의 내용 : %s\n", alpha3);
   printf("배열 alpha4의 크기 : %d\n", sizeof(alpha3));
   getch();
 }




>>>>>  문자 배열의 이용


 #include <stdio.h>
 #include <conio.h>

 void main() {
   char fm[]= "File MENU";
   char em[]= "Edit MENU";
   char hm[]= "Help MENU";
   char wm[]= "Wrong Input";
   char c;

   printf("메뉴 코드를 입력하세요 : ");
   if((c=getch()) >= 97) c -= 32;

   while(c!='X') {
     switch(c) {
     case 'F' :
  printf("\n%s\n", fm);
  break;
     case 'E' :
  printf("\n%s\n", em);
  break;
     case 'H' :
  printf("\n%s\n", hm);
  break;
     default :
  printf("\n%s\n", wm);
     }
     printf("계속하려면 메뉴 코드를, 종료하려면 X를 누르세요.");
     if((c=getch()) >= 97) c -= 32;
   }
   printf("\n프로그램을 종료합니다.");
   getch();
 }





[참고] 데이터 정렬의 원리
   - swap 알고리즘
     a[0]=100, a[1]=200의 값을 바꾸는 경우, temp는 임시변수

     temp=a[0];
         ↙
     a[0]=a[1];
         ↙
     a[1]=temp;


           temp
       ①↗    ↘ ③
     a[0]   ←   a[1]  
            ② 

       기준수 a[0], 총 비교횟수 4회
       ↓
 비교1 500      400 300 100 200
 비교2 400      500 300 100 200 a[0], a[1] 비교후의 수
 비교3 300      500 400 100 200 a[0], a[2] 비교후의 수
 비교4 100      500 400 300 200 a[0], a[3] 비교후의 수
          100      500 400 300 200 a[0], a[4] 비교후의 수


            기준수 a[1], 총 비교횟수 3회
           ↓
 비교1 100 500      400 300 200
 비교2 100 400      500 300 200 a[1], a[2] 비교후의 수
 비교3 100 300      500 400 200 a[1], a[3] 비교후의 수
          100 200      500 400 300 a[1], a[4] 비교후의 수


                     기준수 a[2], 총 비교횟수 2회
                    ↓
 비교1 100 200      500 400 300
 비교2 100 200      400 500 300 a[2], a[3] 비교후의 수
          100 200      300 500 400 a[2], a[4] 비교후의 수


                        기준수 a[3], 총 비교횟수 1회
                       ↓
 비교1 100 200 300      500 400
          100 200 300      400 500 a[3], a[4] 비교후의 수


for (i=0; i<=3; i++)  <-- 기준수
   for(j=i+1; j<=4; j++)  <-- 대응수



>>>>> 5개의 정수를 입력받아 정렬하는 프로그램


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int i, j, t;
   int jum[5];

   for(i=0; i<5; i++) {
   printf("%d번째 수를 입력하세요 : ", i+1);
   scanf("%d", &jum[i]);
   }
   printf("\n");
   printf("입력된 자료\n");

   for(i=0; i<5; i++) {
   printf("%d ", jum[i]);
   }

   for(i=0; i<=3; i++) {
      for(j=i+1; j<=4; j++) {
         if(jum[i]>jum[j]) {
           t=jum[i];
           jum[i]=jum[i];
           jum[j]=t;
  }
      }
   }
   printf("\n정렬된 자료\n");

   for(i=0; i<5; i++) {
      printf("%d ", jum[i]);
   }
   getch();
 }

Posted by 나비:D
:
BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Total :
Today : Yesterday :