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 |