개발 기록/C Language

개발 기록/C Language

[C언어] call by value, call by reference | 값에 의한 호출, 참조에 의한 호출

call by value : 값에 의한 호출 call by reference : 참조에 의한 호출 값에 의한 호출은 함수에 주는 값(인자)이 다른 변수에 그대로 복사되는 것이고, 참조에 의한 호출은 함수에 주는 값(인자)의 주소를 매개변수로 받는 것이다. 아래 예제를 보자. #include void swap1(int a, int b) // call by value (값만 넘겨줌.) { int t = a; a = b; b = t; } void swap2(int* a, int* b) // call by reference (주소를 넘겨줌.) { int t = *a; *a = *b; *b = t; } int main() { int n1 = 5, n2 = 7; printf("n1 = %d, n2 = %d\n", ..

개발 기록/C Language

[C언어] 메모리 구조 | 힙 영역과 스택 영역

프로그램이 실행되기 위해 프로그램과 안의 변수들이 메모리에 로드되어야 한다. 따라서 컴퓨터의 운영체제는 위와 같이 다양한 메모리 공간을 제공한다. 프로그램이 운영체제로부터 할당받는 메모리 공간을 알아보자. 코드(code) 영역 실행할 프로그램의 코드가 저장되는 영역이고, 텍스트 영역이라고도 부른다. CPU는 코드의 명령어를 하나씩 가져가서 처리한다. 데이터(data) 영역 프로그램의 전역 변수와 정적 변수(static)가 저장되는 공간이다. 이 영역은 프로그램의 시작과 함께 할당되고, 프로그램이 종료되면 소멸한다. 스택(stack) 영역 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 곳. ( 함수의 매개 변수, 함수 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역변수 등 ) 이 영역은..

개발 기록/C Language

[C언어] extern 알아보기 | 소스 파일 분리

extern을 영어사전에서 찾아보면 , 외래 의사라고 나와 있다. C언어 프로그래밍에서는 extern을 이용해 다른 소스에 있는 변수와 함수를 갖다 쓸 수 있다. extern 자료형 전역변수명; extern 반환값자료형 함수이름(매개변수자료형) 이런 식으로 사용할 수 있다. (위의 형식은 변수를 불러올때, 아래의 형식은 함수를 불러올 때) [main.c] #include int i = 7; extern void func1(); int main() { int i = 5; func1(); i++; printf("i=%d\n", i); } [main1.c] #include extern int i; void func1(); void func2(); void func1() { i++; printf("extern ..

개발 기록/C Language

[C언어] 마법의 소라고동 프로그램 | 결정 장애 해소 C언어 코드

#include #include #include #include char ans[50][80] = { {"꼭 해 이건."}, {"지금 당장."}, {"맘에 안 들어."}, {"좋은 생각이야."}, {"무조건"}, {"나쁘지 않아."}, {"다시 한 번 말해봐."}, {"그건 아닌데."}, {"너는 이미 답을 알고 있어."}, {"후회할 선택하지 마."}, {"너무 별로야."}, {"아닌 거 같아."}, {"너의 마음을 따라가."}, {"그거 괜찮다."}, {"아마 아닐 거야."}, {"좀 아니야."}, {"선 넘네."}, {"할 만 한데?"}, {"안 돼."}, {"둘 다."}, {"잘 안들렸어."}, {"멈춰!"}, {"그래."}, {"완전 똑똑한데."} }; int main(void) { srand(..

개발 기록/C Language

[C언어] 토끼와 닭의 다리 수와 전체 마리 수 문제

토끼의 다리 수 4개, 닭의 다리 수 2개 토끼와 닭의 전체 다리 수와 전체 마리 수를 입력 받을 때, 토끼와 닭이 각각 몇 마리인지 구하는 문제 [입력예] 6 2 [출력예] 토끼 : 1, 닭 : 1 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int num, leg; int rabbit = 0, chicken = 0; scanf("%d %d", &leg, &num); while (num > 0) { if (leg - 4 >= 0) { rabbit++; num--; leg -= 4; } else if (leg - 2 >= 0) { chicken++; num--; leg -= 2; } } printf("토끼 : %d, 닭 : %d", rabbit,..

개발 기록/C Language

[C언어] 안쪽이 비어있는 사각형 만들기 | 별 출력 | for

#define _CRT_SECURE_NO_WARNINGS #include int main(void) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if ((i == 0 || i == n - 1) || (j == 0 || j == n - 1)) printf("*"); else printf(" "); } printf("\n"); } return 0; }

개발 기록/C Language

[C언어] 안쪽이 비어있는 직각삼각형 만들기 | for , continue

#define _CRT_SECURE_NO_WARNINGS #include int main(void) { int n; printf("수 입력: "); scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j

개발 기록/C Language

[C언어] 정수를 입력받고, 입력된 각 정수의 개수 출력하기

1부터 10까지의 정수를 입력받는 중 입력된 정수가 범위를 벗어나면 그때까지 입력된 각 숫자의 개수를 작은 수부터 출력하는 프로그램을 작성 [입력 예] 5 6 10 6 3 0 [출력 예] 3 : 1개 5 : 1개 6 : 2개 10 : 1개 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int input; int range[11] = { 0, }; while (1) { scanf("%d", &input); if (input 10) break; range[input]++; } for (int i = 1; i

개발 기록/C Language

[C언어] 달리기 기록 파일 입력, 평균 파일 출력 | 파일 입출력 FILE IO

// 달리기 초 계산 평균 파일 출력 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { FILE* ifp = fopen("run.txt", "r"); // 파일 읽기 read FILE* ofp = fopen("result.txt", "w"); // 파일 쓰기 write char name[10]; double avg, n1, n2, n3; fscanf(ifp, "%s %lf %lf %lf", name, &n1, &n2, &n3); avg = (n1 + n2 + n3) / 3.0; fprintf(ofp, "%s %.lf\n", name, avg); fscanf(ifp, "%s %lf %lf %lf", name, &n1, &n2, &n3); avg = (n..

개발 기록/C Language

[C언어] 대소고 기말 평가 대비 코드 | 구조체, 미로 재귀 탐색, 소수

// 점을 표현하는 구조체 #define _CRT_SECURE_NO_WARNINGS #include typedef struct _p { int x; int y; }Point; struct Point { int x, y; }; int main(void) { struct Point p1, p2; // Point p1, p2; p1.x = 5; p1.y = 6; return 0; } #define _CRT_SECURE_NO_WARNINGS #include int m[9][9] = { // maze {2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,2}, {2,0,2,2,0,2,2,0,2}, {2,0,2,0,0,2,0,0,2}, {2,0,2,0,2,0,2,0,2}, {2,0,0,0,0,0,2,..

개발 기록/C Language

[C언어] 도서 종합 관리 프로그램 개발 계획서 | development plan

학교 수행평가 과제로 위처럼 만들어봤다. 소스코드와 실행 방법은 아래 글에 첨부되어있다. [C언어] 도서 관리 프로그램 | 도서 대출, 반납, 등록, 검색 | 구조체, 파일입출력 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #define BOOK_NAME_SIZE 50 #define BOOK_AUTH_SIZE 30 #define BOOK_PUBL_SIZE 30 void borrowbook(); // 도서 대출 함수 void returnbook.. white-world.tistory.com

개발 기록/C Language

[C언어] 구조체 복사 strcpy, memcpy 알아보기

C언어에서는 구조체란 개념을 사용하고, 한 구조체변수에서 다른 구조체변수로 구조체를 복사하려면 아래처럼 할 수 있다. #define _CRT_SECURE_NO_WARNINGS #include #include typedef struct _p { char name[20]; int x; int y; }Point; int main(void) { Point p1, p2; strcpy(p1.name, "구조체 복사"); p1.x = 10; p1.y = 20; // 아래 출력되도록 p2에 p1의 값을 복사해보자. strcpy(p2.name, p1.name); p2.x = p1.x; p2.y = p1.y; printf("%s\n", p2.name); printf("%d %d\n", p2.x, p2.y); return ..

개발 기록/C Language

[C언어] 구조체로 학생 정보 입력받고 출력하기 | struct, typedef

#define _CRT_SECURE_NO_WARNINGS #include // 구조체를 사용하여 이름과 나이를 입력받아 출력하는 프로그램 typedef struct data { char name[20]; int age; int stunum; }Student; int main() { Student me; printf("이름 입력 : "); scanf("%s", me.name); printf("나이 입력 : "); scanf("%d", &me.age); printf("학번 입력 : "); scanf("%d", &me.stunum); //출력하는 코드를 작성해보세요. printf("제 이름은 %s, 나이는 %d, 학번은 %d입니다.\n", me.name, me.age, me.stunum); return 0; ..

개발 기록/C Language

[C언어] 도서 관리 프로그램 | 도서 대출, 반납, 등록, 검색 | 구조체, 파일입출력

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #define BOOK_NAME_SIZE 50 #define BOOK_AUTH_SIZE 30 #define BOOK_PUBL_SIZE 30 void borrowbook(); // 도서 대출 함수 void returnbook(); // 도서 반납 함수 void registerbook(); // 도서 등록 함수 void printbook(); // 도서 목록 출력 함수 void searchmenu(); // 도서 검색 메뉴 함수 void searchbookbyname(); // 도서명으로 검색 void searchbookbyauth(); // 저자로 검색 void searchbookbyp..

개발 기록/C Language

[C언어] 로또 번호 추첨하고 맞추는 프로그램 | Lottery

#define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { int cnt = 0; int randNum; int isSame; int input[7] = { 0, }; int lottery[7] = { 0, }; int randomArray[51] = { 0, }; srand(time(NULL)); printf("로또 7개의 숫자를 입력하세요(1~50 중복입력불가) : "); for (int i = 0; i < 7; i++) scanf("%d", &input[i]); for (int i = 0; i < 7; i++) { randNum = rand() % 50 + 1; if(randomArray[randNum]) { i--; continue; }..

우준성
'개발 기록/C Language' 카테고리의 글 목록