본문 바로가기

카테고리 없음

<프로그래밍기초 2021-05-17>

2차원 배열 

-2차원 배열은 1차원 배열을 여러개 연결한 것 , 첨자를 2개 사용하는 배열 

 

ex) int aa[3][4]

aa[0][0] aa[0][1] aa[0][2] aa[0][3]
aa[1][0] aa[1][1] aa[1][2] aa[1][3]
aa[2][0] aa[2][1] aa[2][2] aa[2][3]
#include <stdio.h>

int main() {

	int aa[3][4];

	aa[0][0] = 1; aa[0][1] = 2; aa[0][2] = 3; aa[0][3] = 4;
	aa[1][0] = 5; aa[1][1] = 6; aa[1][2] = 7; aa[1][3] = 8;
	aa[2][0] = 9; aa[2][1] = 10; aa[2][2] = 11; aa[2][3] = 12;

	printf("aa[0][0]부터 aa[2][3]까지 출력 \n");

	printf("%3d %3d %3d %3d\n", aa[0][0], aa[0][1], aa[0][2], aa[0][3]);
	printf("%3d %3d %3d %3d\n", aa[1][0], aa[1][1], aa[1][2], aa[1][3]);
	printf("%3d %3d %3d %3d\n", aa[2][0], aa[2][1], aa[2][2], aa[2][3]);


}

 

  

위처럼 직접 입력시 코드 입력이 너무 번거로워 지므로 for문을 사용하여 입력할수도 있다

 

#include <stdio.h>


int main() {


	int aa[3][4];
	int i, k;

	int val = 1;
	for (i = 0; i < 3; i++) {
		for (k = 0; k < 4; k++) {
			aa[i][k] = val;
			val++;
		}
	}
	printf("aa[0][0]부터 aa[2][3]까지 출력\n");

	for (i = 0; i < 3; i++) {
		for (k = 0; k < 4; k++) {

			printf("%3d", aa[i][k]);
		}
		printf("\n");

	}

}

 

 

응용 - 문자열 내 특정 문자의 변환 

 

#include <stdio.h>
#include <string.h>

int main() {

	char str[100];
	char ch1, ch2;
	int i;

	printf("여러 글자를 입력 : ");
	gets(str);

	printf("기존 문자와 새로운 문자 : ");
	scanf("%c %c", &ch1, &ch2);

	for (i = 0; i < strlen(str); i++) {

		if (str[i] == ch1) {
			str[i] = ch2;
		}
	}

	printf("변환된 결과 ==> %s \n", str);

}

 

 

스택 

-스택은 한쪽 끝이 막혀있는 구조, 가장 나중에 들어간 것이 가장 먼저 나오는 구조 LIFO : (Last In First Out)

 

데이터를 넣는 것을: push 

데이터를 빼는것: pop

다음의 들어갈 데이터의 위치: top

 

스택을 코드로 구현한 예 1 )

#include <stdio.h>

int main() {

	char stack[5];
	int top = 0;

	stack[top] = 'A';
	printf(" %c 자동차가 터널에 들어감\n ", stack[top]);
	top++;

	stack[top] = 'B';
	printf(" %c 자동차가 터널에 들어감\n", stack[top]);
	top++;

	stack[top] = 'C';
	printf(" %c 자동차가 터널에 들어감\n", stack[top]);
	top++;

	printf("\n");

	top--;
	printf(" %c 자동차가 터널을 빠져나감\n", stack[top]);
	stack[top] = ' ';

	top--;
	printf(" %c 자동차가 터널을 빠져나감\n", stack[top]);
	stack[top] = ' ';

	top--;
	printf(" %c 자동차가 터널을 빠져나감\n", stack[top]);
	stack[top] = ' ';



}

 

 

while문과 switch case 문을 사용하여 만든 예 ) 

 

#include <stdio.h>

int main() {

	char stack[5];
	int top = 0;

	char carName = 'A';
	int select = 9;

	while (select != 3) {
		
		printf("<1> 자동차 넣기 <2> 자동차 빼기 <3> 끝 :");
		scanf("%d", &select);

		switch (select) {

		case 1: 
			if (top >= 5) {
				printf("터널이 꽉 차서 차가 못 들어감 \n"); 

				
			}
			else {

				stack[top] = carName++;
				printf(" %c 자동차가 터널에 들어감 \n", stack[top]);
				top++;
			}
			break;

		case 2:
			if (top <= 0) {
				printf("빠져나갈 자동차가 없음 \n");
			}
			else {

				top--;
				printf(" %c 자동차가 터널에서 빠짐 \n", stack[top]);
				stack[top] = ' ';
			}
			break;

		case 3:
			printf("현재 터널에 %d대가 있음. \n", top);
			printf("시스템을 종료합니다. \n");
			break;

		default :
			printf("잘못 입력했습니다. 다시 입력하세요");
		}
		


	}





}

메모리와 주소