728x90
C 언어에서 배열(array)이란 동일한 데이터 타입의 요소들을 연속적으로 저장하는 데이터 구조입니다. 배열을 사용하면 여러 개의 변수를 하나의 이름으로 그룹화하여 관리할 수 있습니다. 이에 따라 배열을 사용하면 대용량의 데이터를 사용하는 프로그램을 쉽게 작성할 수 있습니다.
1. 배열 선언
배열이라는 여러 개의 상자를 만들고 적당한 배열 이름을 준비하고 타입을 지정합니다. 배열을 이루고 있는 각각의 상자를 배열 요소(array element)라고 합니다. 배열 요소는 번호가 붙어 있는데 이것을 인덱스(index)라고 합니다. num[0], num[1]....num[9]료 표시합니다. 형이름 배열이름[요소 수];
- int num[10]; int형 값을 10개 선언할 수 있습니다. 10 개의 정수형 타입의 요소는 num배열 인덱스 0부터 9까지
- num[0]=5 부터 num[9]=3 까지 저장,
num[10]=8은 존재하지 않은 인데스로 저장 안 됨
- num[0]=5 부터 num[9]=3 까지 저장,
- int num[5] = {3,5,8}; 일 때 인덱스 0부터 2 까지 인덱스에 저장
- num[0]=3 ,num[1]=5, num[2]=8, num[3]=0, num[4]=0
- int num[ ]={3,5,8,9,10}; 초기값의 개수에 따라 배열크기 결정
- float val[5]; 5개의 실수형 타입의 요소 s배열 인덱스 0부터 4까지
- char str[40]; 40개의 문자형 타입의 요소 str배열 인텍스 0부터 39
- a[0]=94; 94를 a배열 0번째 인덱스에 저장
2. 배열의 이용 기초예시
- 표준입력한 성적 실행하기
#include <stdio.h>
int main(void)
{
int num[5]; // num이라는 상자에 5개의 숫자를 넣을 수 있음
int i, j;
printf("5명의 성적을 입력하세요: \n");
for (i=1;i<=5;i++) { // i값을 5번 반복함
scanf("% d", &num[i]); // 5명의 성적을 입력함
}
for (j=1;j<=5;j++){
printf( "%d번째 성적은 %d점입니다!\n", j, num[j]); //앞에 정수는 요소, 뒤에 정수는 성적임
}
return 0;
}
- 성적 초기화하고 실행하기
#include<stdio.h>
int main(void)
{
int num[5] = {98, 85, 89, 96, 87}; //중괄호로 5명의 성적을 초기화함
int i;
for (i=0;i<5;i++){ //5명의 성적을 반복하여 실행
printf("%d번째 사람의 성적은 %d 입니다. \n", i, num[i]);
}
return 0;
}
- 성적 내림차순 정렬
#include<stdio.h>
#define AP 5 // AP 에 5가 지정됨 (대문자로 정의 하며 ;없음)
int main(void)
{
int num[AP]; // num 상자에 5개의 개수 저장 가능
int sub;
int i, j, a, b;
printf(" %d명의 성적을 입력하세요. \n", AP);
for(i=0;i<AP; i++){
scanf( "%d", &num[i]);
}
for(a=0;a<AP-1;a++) { // a변수는 앞사람성적임 0으로 초기화하여 4까지 수행 5번
for(b=b+1;b<AP;b++) { //b변수는 다음사람성적임 5까지 수행
if(num[b]>num[a]){ //a의성적과 b성적을 비교하여 b성적이 크다면 앞으로 자리를 변경(내림차순)
sub=num[b]; // b성적을 sub방에 보관
num[b]=num[a]; // a성적을 b으로 이동
num[a]=sub; // sub방에 있는 b성적을 a성적으로 이동 성적이 좋은 사람이 앞으로 이동함
}
}
}
for(j=0;j<AP;j++){ // 정렬된 순서대로 나열함
printf("%d등 성적은 %d점입니다\n", j+1, num[j]); // 배열은 0부터 시작하기 때문에 번호출력 시 +1함
}
return 0;
}
- 문자열 배열 출력
#include <stdio.h>
int main(void)
{
char abc[100]; // abc상자에 문자 100개 저장 가능
printf("원하는 문자열을 입력하세요.\n");
scanf("%s", abc); // 문자열 선언 시 &없음
printf(" 입력한 문자열은 %s입니다 .\n", abc); // 문자열 출력
return 0;
}
- 문자열 길이 실행하기
#include<stdio.h>
int main(void)
{
char abc[ ] = "Goddess"; // "큰 따옴표"로 문자선언
int i,j;
j=0;
for(i=0;abc[i]!='\0';i++) { // != '\0' 0과 같지 않을 때까지 abc 방에 있는 문자를 반복해서 읽음
j++; // 하나씩 읽을 때마다 숫자를 누적함
}
printf( "%s의 문자열 길이는 %d입니다.\n", abc, j); // 문자와 전체길이 숫자
return 0;
}
- 문자열 치환하기
#include<stdio.h>
int main(void)
{
char abc[100]; // abc상자에 100개 문자 저장가능
int i;
printf( "원하는 문자열을 입력하세요 \n");
scanf("%s", abc); // 문자열일 때 & 없음
for(i=0;abc[i]!= '\0';i++){ // abc상자에 0이 없을 때까지 i값을 반복해서 읽어 들임
if(abc[i] == 'b') { //abc상자에 있는 문자 중 b알파벳이 있다면
abc[i]='k'; // k알파벳을 그 자리에 넣음=치환
}
}
printf(" %s로 변경했어요 \n", abc);
return 0;
}
- 히스토그램 그리기
#include<stdio.h>
#define SI 10 // SI에 10을 저장 (대문자로 정의하며 ;없음)
int main(void)
{
int num[SI] = { 9, 15, 8, 6, 19, 12, 7,6, 10,24}; // num상자에 10개의 자료 저장
int i,j;
printf(" element value histogram \n");
for (i=0; i<SI; ++i) { // 0부터 9까지 반복실행, ++i 전위증가 i값을 먼저 1 증가 후 그 값을 반환
printf(" %d \t %d \t ",i, num{i]); // 요소 i 번째와 그 요소의 num상자의 숫자 출력
for(j=1;j<=num[i];j++) // num상자의 각 값을 반복, j++ 후위증가 j의 현재값을 반환 후, 1 증가
printf("*"); // 각 인덱스값을 "*'로 출력
printf("\n");
}
return 0;
}
감사합니다.
'프로그램' 카테고리의 다른 글
[C언어]함수정의와 호출, 선언 함수이용한 기초예시 10강 (132) | 2024.09.20 |
---|---|
[C언어]반복문 for문 구조와 기초예시 8강 (172) | 2024.09.07 |
[C언어]조건 연산자 switch~case문 기초예시 7강 (154) | 2024.09.02 |
[C언어]관계, 논리연산자와 조건문(if~else) 기초예시 6강 (226) | 2024.08.27 |
[C언어]다양한 연산자의 사용법과 우선순위 기초예시 5강 (199) | 2024.08.24 |