1. 배열의 개념 : 자료형이 같은 여러개의 값을 연속된 기억장소에 같은 이름(배열명)으로 저장한것 주로 동일한 구조의 많은 자료등을 다룰때 사용한다.
변수는 하나의 자료를 저장하지만 배열은 여러개의 자료를 저장한다 즉 여러 변수의 모임이라고 볼수있다.
2. 배열 선언 및 주의사항 : 배열을 선언할때에 배열의 크기(배열 원소수)에는 정수형 상수만 가능하고 변수는 불가능하다.
3. 배열의 초기화 : 배열의 크기를 지정하고 초기값이 부족하다면 초깃값은 자동으로 0으로 지정된다. 배열 원소수를 명시 않으면 중괄호{} 안의 값 개수가 원소수로 결정된다.
4. 예제1 - 5명의 퀴즈점수를 배열에 저장한 후 평균 출력하기 프로그램
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
/*
//배열선언 예
//1. 1000명의 나이를 저장하는 배열
int age[1000];
//2. 5명의 퀴즈점수를 저장하는 배열
int quiz[5];
//3. 100명의 평균을 저장하는 배열
double avg[100];
//4. 학생의 이름(홍길동)을 저장하는 배열
char name[10];
*/
//배열 예제1. 5명의 퀴즈점수를 입력
int quiz[SIZE], i, count;
int sum=0;
double avg;
for(i=0;i<SIZE;i++)
{
printf("퀴즈점수 입력 : ");
scanf("%d", &quiz[i]);
sum+=quiz[i]; //sum=sum+quiz[i];
}
avg = (double)sum / SIZE;
//입력한 점수의 합을 출력
printf("입력한 %d명의 합 : %d\n", SIZE, sum);
printf("입력한 %d명의 평균 : %.1lf\n", SIZE, avg);
//평균미만인 수
for(i=0;i<SIZE;i++)
{
if(quiz[i] < avg)
count++;
}
//결과출력
printf("===========================\n");
printf(" 번호 점수 평균과의 차이 \n");
printf("===========================\n");
for(i=0;i<SIZE;i++)
printf(" %2d %2d %5.1lf\n", i+1, quiz[i], quiz[i]-avg);
printf("===========================\n");
printf(" 평균 : %.1lf 점 \n", avg);
printf("===========================\n");
printf(" 평균미만 : %d명 \n", count);
return 0;
}
5. 예제 2 - 배열의 원소에서 최소값, 최대값 구하기
#include <stdio.h>
#include <stdlib.h>
#define N 5
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int i;
int min, max; //1. min 변수 지정
int f[N]={3,0,-30,-20,-1};
for(i=0;i<N;i++)
{
printf("%d ", f[i]);
}
printf("\n");
//최소값 찾기
//2.첫번째 원소를 min변수에 저장
min = f[0];
for (i=1;i<N;i++)
{
if(f[i]<min) //3. 각 원소를 min변수와 비교 및 교체작업
min = f[i];
}
//최소값 출력
printf("\n\n 최소값은 %d \n", min);
//최대값 찾기
max = f[0];
for(i=1;i<N;i++)
{
if(f[i]>max)
max = f[i];
}
//최대값 출력
printf("\n\n 최대값은 %d \n", max);
return 0;
}
7. 예제4 - 배열의 원소를 오름차순 정렬 소스코드, 실행결과
(주석: 오름차순의 개념정리, 버블정렬, 개선된 버블정렬의 원리 및 차이점)
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a[SIZE] = {5,4,3,2,1};
int repeat, i, temp;
FILE *fp;
printf("정렬 전 배열 : ");
for(i=0;i<SIZE;i++)
printf("%4d",a[i]);
printf("\n");
// 버블 정렬 시작 : 오름차순정렬
for(repeat=1;repeat<SIZE;repeat++) // (배열 원소수-1)번 반복하기
{
//배열의 이웃한 두 원소간의 정렬을 차례대로 반복하기
for(i=0;i<SIZE-repeat;i++) //(i가 0부터 3까지 순서를 반복)
{ //SIZE-repeat 개선된 이유 : 이미 정렬이 끝난 부분의 비교를 제거하여 실행속도가 빨라짐.
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;//이웃하는 두원소 교환
}
} //안쪽 for의 끝
} // 바깥쪽 for의 끝
for(i=0;i<SIZE;i++)
printf("%4d", a[i]);
//배열원소 출력
fp=fopen("asc.txt","w");
for(i=0;i<SIZE;i++)
fprintf(fp, "오름차순 정렬 : %2d",a[i]);
fclose(fp);
return 0;
}
8. 예제5 - 배열의 원소를 내림차순 정렬 소스코드, 실행결과
(주석: 내림차순 개념정리)
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a[SIZE] = {1,2,3,4,5};
int repeat, i, temp;
printf("정렬 전 배열 : ");
for(i=0;i<SIZE;i++)
printf("%4d",a[i]);
printf("\n");
// 버블 정렬 시작 : 내림차순정렬
for(repeat=1;repeat<SIZE;repeat++) // (배열 원소수-1)번 반복하기
{
//배열의 이웃한 두 원소간의 정렬을 차례대로 반복하기
for(i=0;i<SIZE-repeat;i++) //(i가 0부터 3까지 순서를 반복)
{ //SIZE-repeat 개선된 이유 : 이미 정렬이 끝난 부분의 비교를 제거하여 실행속도가 빨라짐.
if(a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;//이웃하는 두원소 교환
}
} //안쪽 for의 끝
} // 바깥쪽 for의 끝
for(i=0;i<SIZE;i++)
printf("%4d", a[i]);
//배열원소 출력
return 0;
}
'basic > C' 카테고리의 다른 글
7. 포인터 (0) | 2016.11.10 |
---|---|
6. 함수 (0) | 2016.10.31 |
4. 제어문(조건문과 반복문) (0) | 2016.10.06 |
3. 연산자 (0) | 2016.09.22 |
2. C프로그래밍의 기초문법 (0) | 2016.09.08 |