본문 바로가기

C언어/예습

[C언어 예습]DAY10_2차원 배열, 실생활 예제(아파트 월세, 동 월세 구하는 프로그램)

2차원 배열


#include <stdio.h>

void main() {
	// 정방 배열 : 사각형
	// 비정방 배열 : 1행 3열, 2행 4열, 3행 7열
	int arrDate[2][4] = { 
		{1, 2, 3, 4} , 
		{5, 6, 7, 8} 
	};

	int cLength = sizeof(arrDate[0])/ sizeof(int);
	int rLength = sizeof(arrDate) / cLength/ sizeof(int);
	int data = 9;

	//행
	for (int i = 0; i < rLength; i++) {
		//열
		for (int j = 0; j < cLength; j++) {
			data--;
			arrDate[i][j] = data;
			printf("%d", arrDate[i][j]);
		}
		printf("\n");
	}
}

 


 

#include <stdio.h>
//#define ROW_SIZE 3
//#define COL_SIZE 3

void main() {
	int arrData[3][4] = { 0, };
	int cLength = sizeof(arrData[0]) / sizeof(int);
	int rLength = sizeof(arrData)/ cLength/ sizeof(int);
	int cnt = 0;
	//2 4 6 8
	//10 12 14 16
	//18 20 22 24

	for (int  i = 0; i < rLength; i++){
		for (int j = 0; j < cLength; j++){
			cnt += 2;
			*(*(arrData + i) + j) = cnt;
		}
	}

	for (int i = 0; i < rLength; i++) {
		for (int j = 0; j < cLength; j++) {
			printf("%2d", *(*(arrData + i) + j));
		}
		printf("\n");
	} 
}

 


실생활 예제(아파트 월세, 동 월세 구하는 프로그램)

 


 

#include <stdio.h>

void main() {
	//1동, 2동 각 동마다 3호씩 있다.
	//개나리 아파트

	int arrDong[2][3] = { 0, };
	int cLength = sizeof(arrDong[0]) / sizeof(int);
	int rLength = sizeof(arrDong) / cLength/  sizeof(int);
	int total = 0;
	int sum[2] = { 0, };

	for (int i = 0; i < rLength; i++)
	{
		for (int j = 0; j < cLength; j++)
		{
			printf("%d동 %d호 월세를 입력하세요(단위 : 만원)", i + 1, j + 1);
			scanf_s("%d", arrDong[i]+j);
			total += arrDong[i][j];
			sum[i] += arrDong[i][j];
		}
	}

	//10 20 30
	//40 50 60

	for(int i = 0; i < rLength; i++ ){
		printf("%d동 총 월세 : %d만원\n", i + 1, sum[i]);
		printf("%d동 평균 월세 : %.1lf만원\n", i + 1, (double)sum[i]/cLength);
	}
	printf("개나리 아파트 총 월세 : %d만원\n", total);
	printf("개나리 아파트 평균 월세 : %.1lf만원\n", (double)total/(cLength*rLength));

}

 

* %2d => 십의 자리 숫자까지 표현

* %02d => d의 값이 일의 자리수 일때

                ex) 2일 경우, 02로 표현

 


Q. scanf_s("%d", &a); 일 경우, a의 주소값에 입력값을 저장한다는 의미인데, 

scanf_s("%d", *(arrData+i)+j); 에서는 왜 *(arrData+i)+j 로 사용하나요? *(*(arrData+i)+j)를 안쓰고!

 

A.