웹_프론트_백엔드/단과

[단과_C] 2020.03.16

shine94 2020. 3. 17. 01:00

1. 기억 저장 부류

   해당 파일만 가능 : 정적변수
   다른 파일도 가능 : 전역변수

 

 

2. 오늘 실습 코드

1) functionTask.c

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

/*
	[고급]
	4자리 정수를 한글로 바꿔주는 함수
	5개의 정수를 오름차순으로 정렬하는 함수
*/

//5개의 정수를 입력받고 최소값과 최대값을 구해주는 함수
//int* getMaxAndMin(int arData[], int length) {
//	//result[0] : 최대값
//	//result[1] : 최소값
//	int result[2] = { arData[0], arData[0] };
//	for (int i = 1; i < length; i++) {
//		if (result[0] < arData[i]) {
//			result[0] = arData[i];
//		}
//		if (result[1] > arData[i]) {
//			result[1] = arData[i];
//		}
//	}
//	return result;
//}


//4자리 정수를 한글로 바꿔주는 함수
//외부에서 문자열 배열의 주소값을 전달받는다.
void changeToHangle(int num, const char result[][3]) {
	//"공"~"구"까지 문자열 배열에 담는다.
	//외부에서 전달받은 정수 num의 각 자리수 정수가 바로 hangle의 인덱스
	//번호로 활용된다.
	char hangle[10][3] = { "공", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구" };
	int idx = 0;
	//num이 0이라는 뜻은 모든 자리수의 정수를 구했다는 뜻이다.
	//num이 0일 때 탈출!
	while (num != 0) {
		//1024 % 10 == 4
		//1024 / 10 == 102

		//1의 자리수부터 구해지기 때문에 역으로 넣어주기 위해
		//3-idx를 해준다.
		strcpy_s(result[3-idx], sizeof(result[3-idx]), hangle[num % 10]);
		//작업 완료시 1의 자리수를 떼어준다.
		num /= 10;
		//인덱스는 1증가시켜준다
		//3-idx : (3, 2, 1, 0)
		idx++;
	}
}


//5개의 정수를 오름차순으로 정렬하는 함수, 선택정렬
void sortASC(int arData[], int length) {
	//i번째 방의 값을 i+1부터 j번째까지 방에 있는 정수와 비교 후
	//뒤에 값이 더 작으면 위치를 바꾸어 줘서 오름차순으로 정렬한다.
	for (int i = 0; i < length-1; i++) {
		for (int j = i + 1; j < length; j++) {
			if (arData[i] > arData[j]) {
				//i번째 값을 덮어 씌우기 전에 temp에 담아놓고
				//j번째 방에 temp값을 넣는다.
				//즉, 두 공간에 있는 값을 서로 바꿔주는 작업
				int temp = arData[i];
				arData[i] = arData[j];
				arData[j] = temp;
			}
		}
	}
	//9, 4, 1, 8, 2
	//1회전 : 1 9 4 8 2
	//2회전 : 1 2 9 8 4
	//3회전 : 1 2 4 8 9
	//4회전 : 1 2 4 8 9
}


//5개의 정수를 내림차순 정렬하는 함수
void sortDESC(int arData[], int length) {
	for (int i = 0; i < length - 1; i++) {
		for (int j = i + 1; j < length; j++) {
			if (arData[i] < arData[j]) {
				int temp = arData[i];
				arData[i] = arData[j];
				arData[j] = temp;
			}
		}
	}
}

void main() {
	//5개의 정수를 내림차순, 오름차순(주석 처리)으로 정렬하는 함수
	int arData[5] = { 9, 4, 1, 8, 2 };
	int length = sizeof(arData) / sizeof(int);
	sortDESC(arData, length);
	//sortASC(arData, length);
	for (int i = 0; i < length; i++) {
		printf("%d ", arData[i]);
	}
	printf("\n");

	//4자리 정수를 한글로 바꿔주는 함수
	//char result[4][3] = { "", };
	//changeToHangle(1024, result);
	//for (int i = 0; i < 4; i++) {
	//	printf("%s", result[i]);
	//}
	//printf("\n");
    
	//5개의 정수를 입력받고 최소값과 최대값을 구해주는 함수
	//int arData[5] = {5, 3, 9, 2, 4};
	//int length = sizeof(arData) / sizeof(int);
	//printf("최대값 : %d\n", *getMaxAndMin(arData, length));
	//printf("최소값 : %d\n", *(getMaxAndMin(arData, length) + 1));
}

 

2) pointer.c

#include<stdio.h>

void change(int* data) {
	*data = 20;
}

void main() {
	int data = 10;
	change(&data);
	printf("%d\n", data);
}

 

 

3. 내일 배울 거

 : 기존에 만든 카페 코드를 배운 함수를 이용해볼 예정  
   중복검사와 같이 자주 사용된 코드를 함수로 뺄 것이다!! 
   그리고 소스 코드 간결화를 위해 헤더파일을 이용하면...!! 
   우오오..!! 너무 간편해짐과 동시에 보기에 편해진다!!

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_C] 2020.03.18  (0) 2020.03.18
[단과_C] 2020.03.17  (0) 2020.03.18
[단과_C] 2020.03.13  (0) 2020.03.15
[단과_C] 2020.03.12  (0) 2020.03.13
[단과_C] 2020.02.27  (0) 2020.02.27