1. 2차원 배열
: 배열 안에 배열
한 번 접근해도 주소값(행)
두 번 접근해야 값(열)
2. 1차원 배열이 여러 개 필요할 때, 같은 자료형이라면 2차원 배열로 선언한다.
3. 2차원 배열 선언
자료형 배열명[][] = { { 값1, 값2, ... }, { 값3, 값4, ... }, ... };
자료형 배열명[행][열] = { { 값1, 값2, ... }, { 값3, 값4, ... }, ... };
자료형 배열명[행][열] = { 초기값, };
3. *(*(arrData + 행) + 열) : arrData[행][열]
4. 문자열 배열
char arData[문자열 개수][문자열의 문자 개수] = { "", "", ... };
문자열은 문자배열
즉, 1차원 배열이다.
따라서 여러 개의 문자열을 저장하고자 한다면 2차원 배열이 필요하다
문자열마다 문자의 개수는 다르므로 동적배열을 사용해야 하고
정적배열을 사용해야할 때에는 열 개수를 충분히 할당해 준다.
5. 2차원 배열의 사용
int arrData[2][3] = { { 3, 4, 5 }, { 9, 8, 7 } };
* 시작주소는 100번지라고 가정한다.
100 104 108 / 112 116 120
6. 정방 배열
: 모든 행의 열 개수가 모두 같은 배열
7. 비정방 배열
: 행 별로 열 개수가 하나라도 다른 배열
8. [2][3][4][5] 의면행열
9. 오늘 실습코드
1) arrTest.c
#include<stdio.h>
#define ROW 2
#define COL 3
void main() {
//아주 불편하다
//불편한 이유? 변수가 2개 필요한 상황에서 하나로 해결하려고 해서
//결론! 변수가 2개 필요할때 for문을 2개를 쓰는데 훨씬 편하다
int arrData[ROW][COL] = { {3, 4, 5}, {9, 8, 7} };
int length = ROW * COL;
for (int i = 0; i < length; i++) {
//행 : 000 111 012 345 / 3 : i / 3
//열 : 012 012 012 345 % 3 : i % 3
arrData[i / 3][i % 3] = (i + 1) * 2;
}
for (int i = 0; i < length; i++) {
if (i != 0 && i % 3 == 0) { printf("\n"); }
//printf("%02d ", arrData[i / 3][i % 3]);
printf("%2d ", arrData[i / 3][i % 3]);
}
printf("\n");
}
2) nestedFor.c
#include<stdio.h>
void main() {
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++) {
printf("%d*%d=%d\n", i, j, i*j);
}
printf("\n");
}
//구구단 1단~9단까지 출력
//for문 한 번만 사용(변수도 한 개만 사용)
//for (int i = 0; i < 81; i++) {
// printf("%d*%d=%d\n", i / 9 + 1, i % 9 + 1, (i / 9 + 1) * (i % 9 + 1));
//}
//for (int i = 1; i < 90; i++) {
// if (i % 10 == 0) {
// continue;
// }
// printf("%d*%d=%d\n", i / 10 + 1, i % 10, (i / 10 + 1) * (i % 10));
//}
}
3) arrTest2.c
#include<stdio.h>
#define R 2
#define C 3
void main() {
//1층 1호 2호 3호
//2층 1호 2호 3호
int arrData[R][C] = { 0, };
int arTotal[R] = { 0, };
double arAvg[R] = { 0.0, };
int total = 0;
double avg = 0.0;
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
printf("%d층 %d호 월세 입력(단위 : 만원)\n", i+1, j+1);
scanf_s("%d", arrData[i]+j);
total += arrData[i][j];
arTotal[i] += arrData[i][j];
}
arAvg[i] = (arTotal[i] + 0.0) / C;
}
avg = (double)total / (R * C);
}
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_C] 2020.03.12 (0) | 2020.03.13 |
---|---|
[단과_C] 2020.02.27 (0) | 2020.02.27 |
[단과_C] 2020.02.25 (0) | 2020.02.26 |
[단과_JAVA] 2020.02.25 (0) | 2020.02.26 |
[단과_C] 2020.02.24 (0) | 2020.02.25 |