728x90
반응형
******************1차원 배열*******************
1. 배열 : 데이터가 많을 때 사용함
ㄴ다수의 정보를 저장하기 위해서는 다수의 배열 선언
1차원 배열 선언에 필요한 것
int : 배열을 이루는 요소(변수)의 자료형
Arr : 배열의 이름
[7] : 배열의 길이
ㄴ 자료형 배열명[SIZE];
배열 선언
int Arr[7]; -1칸당 크기는 4byte
ㄴsizeof(Arr)로 확인가능
배열의 장점 : 순차적으로 접근이 가능하다
for (i = 0; i < 5; i++)
{
sum += arr[i];
}
2. 배열 초기화
int A[SIZE] = { 1, 2, 3, 4, 5 }; // 선언하면서 초기화
int B[5] = { 1, 2 }; // 초기화 값이 부족한 경우 - 부족한 부분 0으로 채워짐
int C[5] = { 0 }; // 전부 0으로 초기화
int D[] = { 1, 2, 3 }; // 초기화 리스트는 있지만 길이가 없음 - 값만큼 길이를 채움
→int D[3]={ 1, 2, 3 };
3. 배열 사이즈
sizeof() 연산자
- sizeof(E) / sizeof(E[0]);
20byte가 결과로 출력, 하나의 byte로 나누면 원래 크기를 알 수 있다.
ex)
void MyFunc(int Arr[])
{
for(int i = 0; i < sizeof(Arr) / sizeof(Arr[0]); i++)
{ a; }
}
※ 인덱스를 잘못 참조하는 경우
int A[5];
A[5] = 100; (X)
4. 배열 저장 데이터 역순 출력
int B[SIZE] ={ 10, 20, 30, 40, 50 };
for(int i = SIZE - 1; i >= 0; i--)
{
printf("B[%d] = %d\n", i, B[i]);
}
5. 배열 대입
ex) int A = 10, B = ;
B = A;
int A[5] = { 10, 20, 30, 40, 50 };
int B[5];
for(int i = 0; i < SIZE; i++)
{
B[i] = A[i];
}
6. 배열 비교
// 배열이 같다 == 모든 배열의 요소가 같다
ex)
int A[5] = { 10, 20, 100, 40, 50 };
int B[5] = { 10, 20, 30, 40, 50 };
for ( int i = 0; i < SIZE; i++)
{
if(A[i] != B[i])
{
printf("다르다");
return 0; // break 대신에 return 0; 사용
}
}
printf("같다");
+++++++++문자열 배열+++++++++++
char 배열에 문자열 저장
NULL != "" //다름 =>NULL문자가 있어야만 문자열로 판단된다
문자열 배열 저장 형태
char str[30] = "simple";
s i m p l e
char str[14]="Good morning!";
배열의 길이가 문자열의 개수+1인 이유 : 문자열의 끝에 문자열의 끝을 의미하는 NULL(\0) 문자가 들어감
ㄴNULL문자는 공백이 아님, 문자형으로는 , 정수형으로는 0이다.
- char형 배열은 SIZE - 1,
마지막 인덱스에는 무조건 \0 (NULL)이 들어감
문자열 입력받기
scanf("%s", str);
ㄴ배열 이름 str앞에는 &연산자를 붙이지 않음
//달마다 며칠까지 있는지 출력하기
#include <stdio.h>
int main(void)
{
int days[] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
for (int i = 0; i < 12; i++)
{
printf("%d월은 %d일까지 있습니다.\n", i+1, days[i]);
}
return 0;
}
//배열에 난수를 입력받아 최소값, 최대값 출력하기
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
int main(void)
{
int max = 0, min = 0;
int num[SIZE] = { 0 };
srand((unsigned)time(NULL));
for (int i = 0; i < SIZE; i++)
{
num[i] = rand();
}
max = num[0];
for (int i = 1; i < SIZE; i++)
{
if (max< num[i])
{
max = num[i];
}
}
min = num[0];
for (int i = 1; i < SIZE; i++)
{
if (min> num[i])
{
max = num[i];
}
}
printf("최소값은 %d\n", max);
printf("최대값은 %d", min);
return 0;
}
//배열의 값을 입력받아 입력받은 배열을 다른배열에 복사하기
#include <stdio.h>
#define SIZE 10
void array_copy(int a[], int b[], int size);
int main(void)
{
int a[SIZE] = { 0 };
int b[SIZE] = { 0 };
printf("배열 a의 원소를 입력하시오(크기는 10) ");
for (int i = 0; i < SIZE; i++)
{
scanf("%d", &a[i]); //배열 값 입력받기
}
for (int i = 0; i < SIZE; i++)
{
printf("%d ", a[i]); //배열 a출력하기
}
printf("\n");
array_copy(a, b, SIZE); //배열 a를 b로 복사하는 함수 호출
}
void array_copy(int a[], int b[], int size)
{
for (int i = 0; i < SIZE; i++)
{
b[i] = a[i];
printf("%d ", b[i]); //복사된 배열 b 출력
}
}
728x90
반응형