1차원 배열이 뭘까?
-1차원 배열이란 "같은 자료형으로 연속된 메모리 공간을 할당하여 사용하는 것"
1차원 배열 사용법
-선언: 자료형 배열명[첨자];
ex) int n[5];, int arr[6];.....
-호출: 배열명[첨자]={};
ex) n[5] = {};, arr[6] = {1,2,3,4,5,6};.....
+ 첨자는 0부터 시작함.
ex) int n[5]; ==> [-][-][-][-][-]
-->n[0] n[1] n[2] n[3] n[4] n[5]
예시)
int n[5] = {1,2,3,4,5}; ==> [1][2][3][4][5]
int n[5] = {} or {0} ==> [0][0][0][0][0]
char n[] = "ABCD E" ==> [A][B][C][D][ ][E][\0]
-->char n[]의 경우는 마지막임을 표시하기 위해 문자열 맨 마지막에 \0을 넣어줘야 하므로 출력하고자 하는 문자 갯수 +1만큼을 첨자에 넣어주면 된다.
기본문제
1차원 배열을 사용하는 간단한 문제 예시이다.
문제) 숫자n을 입력받아 1부터 n까지 입력받은 값을 반대로 출력하는 프로그램을 작성해보자
정답)#include<stdio.h>
int main(){
int n, a[1000]; //첨자를 1000으로 설정
scanf("%d", &n); //n의 값을 scanf로 받음
for(int i=0;i<n;i++){ // for문이 n번 만큼 돌아갈 수 있도록 설정
scanf("%d", &a[i]); // a[i]에 입력하고 싶은 숫자를 입력
}
for(int j=n-1; j>=0; j--){ // for문이 n번 만큼 돌아갈 수 있도록 설정
printf("%d", a[j]); //a[j]값을 print
}
return 0;
}
2차원 배열이란 뭘까?
-2차원 배열이란 [](대괄호)를 2번 사용하여 각각의 값을 선언하고 첫번째 대괄호에는 세로 크기, 두 번째 대괄호에는 가로 크기를 지정한다.
+ 1차원 배열과 마찬가지로 첨자는 0부터 시작한다.
ex) 자료형 배열이름[세로크기][가로크기];
예시) 만약 2차원 배열을 int a[3][4];의 형태로 출력한다면?
==> int a[3][4] = {
{가로 4개},
{가로 4개}, --> 세로는 3줄
{가로 4개}
};
기본문제
2차원 배열을 사용하는 간단하지 않은 문제이다.
다음과 같은 n*n 배열 구조를 출력해보자.
입력이 3인 경우 다음과 같이 출력한다.
ex) 1 2 3
4 5 6
7 8 9
정답) #include<stdio.h>
int main(){
int a[99][99],n, sum=1; //세로 최대 99줄, 가로 최대 99줄 까지 가능하도록 설정
scanf("%d", &n); //scanf로 n의 값 설정
for(int i=1;i<=n; i++){ //n만큼 for문이 돌 수 있도록 설정
for(int j=1; j<=n; j++){ //n만큼 for문이 돌 수 있도록 설정
a[i][j]=sum; //a[i][j]값 sum에 대입
sum++; //sum의 값 +1
printf("%d ", a[i][j]); //sum의 값(a[i][j])출력
}
printf("\n");
}
return 0;
}