일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 실습으로 다지는 c#
- 실습
- C++
- 동영상 강의
- 유튜브 동영상 강의
- 언제나휴일
- 졸업 작품 소재
- 소켓 통신
- 충남 천안
- 원격 제어 프로그램
- 동영상
- 독립기념관
- 클래스 다이어그램
- 언제나 휴일
- 네트워크 프로그래밍
- c언어
- 안드로이드 앱 개발
- 소스 코드
- 프로젝트
- 표준 입출력
- 산책하기 좋은 곳
- 캡슐화
- 추천
- c#
- 표준 라이브러리 함수
- 강의
- 파이썬
- 알고리즘
- 무료 동영상 강의
- Windows Forms
- Today
- Total
목록c언어 (113)
프로그래밍 언어 및 기술 [언제나휴일]
[C언어 소스] 연결리스트를 이용하여 구현한 큐안녕하세요. 언제나 휴일이예요.이번에는 연결리스트를 이용하여 구현한 큐의 소스 코드예요.큐는 자료를 한쪽으로 보관하고 다른쪽에서 꺼내는 FIFO(First In First Out) 방식의 자료구조입니다. 큐에 자료를 보관하는 연산을 PUT 혹은 ENQUEUE라 말하고 꺼내는 연산을 GET 혹은 DEQUEUE라고 말합니다. 그리고 보관할 위치 정보를 rear, 꺼낼 위치 정보를 front라고 말해요.연결리스트를 이용하여 구현한 큐에서는 보관할 때 rear 뒤에 보관하고 꺼낼 때 front에 있는 것을 꺼냅니다. 그리고 보관할 때 허용하는 메모리 범위 내에서 보관할 수 있어 꽉 찼는지 확인할 필요가 없습니다.알고리즘PUT 연산now = MakeNode(data)..
알고리즘부분 문자열 복사(dest: 버퍼, dsize:버퍼 길이, src: 원본 문자열, n:복사할 문자 개수)origin:= dest반복(dsize와 n이 참이고 dest 가리키는 곳에 src가 가리키는 문자 대입)dest와 src를 다음 위치로 증가, dsize 1감소, n 1감소origin 반환소스 코드//부분 문자열 복사하는 함수 만들기 - 버퍼 오버플로우 방지#include #include char *mystrncpy_s(char *dest, size_t dsize, const char *src, size_t n);int main(void){ char source[100] = "Hello World"; char dest[100] = "abcde Yahoo"; printf(..
알고리즘부분 문자열 복사하기(dest:복사할 버퍼, src: 원본 문자열, n:복사할 문자 개수)origin:= dest반복(n이 0보다 크면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)dest와 src를 다음 위치로 증가, n 1감소origin 반환소스코드//부분 문자열 복사하는 함수 만들기#include char *mystrncpy(char *dest, const char *src, size_t n);int main(void){ char source[100] = "Hello World"; char dest[100] = "abcde Yahoo"; printf("원본 문자열:%s 의 5개 문자 복사\n", source); printf("복사 전 현재 결과 문자열:%s\n..
알고리즘문자열 복사하기(dest:복사할 버퍼, dsize:버퍼 길이, src: 원본 문자열)….dsize 1감소…..origin:= dest….반복(dsize가 참이면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)//대입한 결과가 참이면 반복……..dest와 src를 다음 위치로 증가, dsize 1감소….dest가 가리키는 곳에 종료 문자 대입….origin 반환소스 코드//문자열 복사 - 버퍼 오버플로우 방지#include char *mystrcpy_s(char *dest, size_t dsize, const char *src);int main(void){ char source[100] = "Hello World"; char dest[100]; printf("원본 문..
[C언어 소스] 문자열 복사하는 함수 만들기알고리즘문자열 복사하기(dest:복사할 버퍼, src: 원본 문자열)….origin:= dest….반복(dest가 가리키는 곳에 src가 가리키는 문자 대입) //대입한 결과가 참이면 반복……..dest와 src를 다음 위치로 증가….origin 반환소스 코드//문자열 복사하는 함수 만들기#include char *mystrcpy(char *dest, const char *src);int main(void){ char source[100] = "Hello World"; char dest[100]; printf("원본 문자열:%s\n", source); mystrcpy(dest, source); printf("복사 결과 문자열: %s\n..
알고리즘부분 문자열 비교(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2, n:비교할 문자 개수)….반복(n이 0보다 크면서 str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)……..str1과 str2를 다음 위치로 이동……..n을 1 감소….str1과 str2가 가리키는 문자의 차이 반환소스코드//부분 문자열 비교하는 함수 만들기#include int mystrlen(const char *str);//사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별//차이가 없으면 0 반환int mystrncmp(const char *str1, const char *str2, size_t n);int main(void){ char src..
알고리즘문자열 비교하기(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2)….반복(str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)………str1과 str2를 다음 위치로 이동….str1과 str2가 가리키는 문자의 차이 반환소스코드//문자열 비교하는 함수 만들기#include //사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별//차이가 없으면 0 반환int mystrcmp(const char *str1, const char *str2);int main(void){ char names[5][20] = { "홍길동","강감찬","이순신","을지문덕","한석봉" }; char name[20]; ..
[C언어 소스] 문자열 길이를 계산하는 함수 만들기알고리즘문자열 길이 구하기(str:문자열 시작 위치)cnt:=0반복(str[cnt]가 참인 문자) cnt 1 증가cnt 반환 소스 코드//문자열 길이 구하는 함수 만들기//참고 에 strlen 함수가 있습니다.#include int mystrlen(const char *str);int main(void){ char name[100] = "Hello World"; printf("%s\n", name); printf("길이: %d\n", mystrlen(name)); return 0;}int mystrlen(const char *str){ int cnt; //str[cnt]가 거짓 문자(종료 문자, '\0')가 나올 때까..
n 개의 정수를 표현하기 가장 적합한 자료 형식은 정수 형식을 원소로 하는 배열이겠죠.n을 10으로 하드 코딩한다면 다음과 같습니다.int arr[10];제일 먼저 함수 이름을 결정합시다.홀수 합계를 구하는 것이므로 GetOddSum 이라고 정할게요.n개의 정수 중에 홀수의 합계를 구하는 함수의 함수 원형을 정해봅시다.C언어에서 배열 이름은 할당한 메모리 주소입니다. 해당 주소에 원소 형식을 사용할 것이므로 원소 형식 포인터로 생각할 수 있어요.그리고 배열의 크기를 전달해야겠죠.따라서 입력 매개변수는 2개로 int *base, int size 정도면 적당하겠네요.*원소 개수가 음수가 올 수 없다는 것을 고려한다면 unsigned 은 size_t로 표현할 수도 있어요.*함수에서는 결과로 홀수의 합계를 반환..
알고리즘n:←높이 입력반복(space:1→(n-1)) 공백 출력‘*’출력개행 출력반복(line:1→n-2) 반복(space:1→n-line-1) 공백 출력 ‘*’출력 반복(space:1→2line-1) 공백 출력 ‘*’ 출력 개행반복(star:1→(2n-1)) ‘*’출력개행소스코드//반복문 연습 - 속이 빈 삼각형//입력//5 - n//출력// * 공백 4, 별1, 개행// * * 1- 공백 3, 별1, 공백1,별1, 개행 // * * 2- 공백 2, 별1, 공백3,별1, 개행// * * 3- 공백 1, 별1, 공백5,별..
알고리즘n:←산의 높이 입력반복(line:1→2n) 조건(line 반복(space:1→4n-1-line) 공백 출력 반복(star:1→2line-1) ‘*’ 출력 개행아니면 반복(space:1→2n-line) 공백 출력 반복(start:1→2(line-n)) ‘*’ 출력 반복(space:1→2(2n-line)) 공백 출력 반복(star:1→(2n-line-1)) ‘*’ 출력 반복(space:1→2(2n-line)) 공백 출력 반복(start:1→2(line-n)) ‘*’ 출력 개행소스코드//반복문 연습 - 산봉우..
[C언어 소스] 숫자 피라미드다음처럼 출력할 라인 수를 입력하여 정수 피라미드를 출력하시오. 라인 수 입력Loop(i:1->line) Loop(space:0->line-1) printf space Loop(num:1->i) print num Loop(num:i-1->1) print num#include int main(){ int line = 0; int num = 0, i = 0, space = 0; printf("정수:"); scanf_s("%d", &line); for (i = 1; i 0; num--) { printf("%d", num); } putchar('..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어]알고리즘n:←정수 입력반복(line:0→n)반복(space:0→n-line-1)공백 출력반복(star:0→2*line+1)‘*’ 출력개행반복(line:n-2→n)반복(space:0→n-line-1)공백 출력 반복(star:0→2*line+1)‘*’ 출력개행소스코드//반복문 연습 - 다이아몬드 출력// 입력// 5 - n//출력// * 0- 공백 4, 별1, 개행// *** 1- 공백 3, 별3, 개행 // ***** 2- 공백2, 별5, 개행// ******* 3- 공백1, 별7, 개행 // ********* 4- 공백0,..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어] 알고리즘n:←출력할 라인 수 입력 반복(line:0→n)—반복(space:0→line)——공백 출력—반복(star:0→2(n-line)-1)——‘*’ 출력—개행소스코드 //반복문 연습 - 역삼각형 출력//입력//5 - n //출력// ********* 0- 공백0, 별9, 개행// ******* 1- 공백1, 별7, 개행 // ***** 2- 공백2, 별5, 개행// *** 3- 공백 3, 별3, 개행// * 4- 공백 4, 별1, 개행 //공백 = line//별 = 2*(n-line)-1//개행=1 #include in..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어]알고리즘n:←출력할 라인 수 입력 반복(line:0→n)—반복(space:0→(n-line))——공백 출력—반복(star:0→(2line+1))——‘*’ 출력—개행소스코드//반복문 연습 - 삼각형 출력//입력// 5 - n//출력// * 0- 공백 4, 별1, 개행// *** 1- 공백 3, 별3, 개행 // ***** 2- 공백2, 별5, 개행// ******* 3- 공백1, 별7, 개행 // ********* 4- 공백0, 별9, 개행//공백 = n-line//별 = 2*line +1//개행=1#include int..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어]알고리즘n:←출력할 라인 수 입력반복(i:0→n)—반복(j:0→n)——‘*’출력—개행소스 코드//정사각형 출력// 입력// 5//출력// *****// *****// *****// *****// *****#include int main(void){ int n; int i, j; printf("출력할 라인 수:"); scanf_s("%d", &n);//입력 for (i = 0; i 언제나휴일 추천 여행 및 산책
안녕하세요. 언제나휴일의 언휴예요.함수 선언, 함수 정의, 함수 호출 [C언어] 프로그램을 만들다 보면 자주 사용하는 알고리즘이 있어요.이러한 코드는 이름(함수 명), 알고리즘에 필요한 입력 인자(입력 매개변수), 원하는 결과(리턴 타입)를 정하여 알고리즘을 전개하여 함수로 만들 수 있습니다.함수를 만들면 필요할 때 함수를 호출하여 사용할 수 있어요.함수 개요우리는 초등학교부터 함수에 관한 교육을 받아왔어요.블랙 박스에 입력 값을 넣으면 출력 값이 나오는 형태, y = x+2 처럼 방정식 형태, 정의역과 공역의 요소를 매핑하는 형태와 f(x) = x+2 등 다양하게 다루었어요. 함수 정의문C언어의 함수 관련 문법은 크게 함수 정의문, 함수 호출문, 함수 선언문이 있어요.함수 정의문은 함수를 만드는 구문을..
안녕하세요. 언제나 휴일의 언휴예요.값에 따라 수행할 구문을 선택하는 switch case 문 [C언어] 선택문C언어에서는 특정 표현의 값에 따라 구문을 선택하여 수행하는 switch 선택문을 제공하고 있어요.switch(표현){case 상수: [수행 구문] [break]case 상수: [수행 구문] [break]…[default:] [수행구문] [break] }switch 선택문에서 중괄호는 반드시 달아야 합니다. 물론 개발할 때 중괄호를 달지 않으면 문법 오류가 발생하기 때문에 개발할 때 실수할 확률은 지극히 낮겠죠.여러 조건에 따라 수행할 구문을 표현할 때 if 조건문을 사용하면 복잡할 때가 있습니다. 이 때 switch 선택문으로 해결할 수 있는지 고민해 보세요.학점 부여하기로 조건문과 선택문 비..
안녕하세요. 언제나 휴일의 언휴예요.대입 연산의 왼쪽(좌항)에 오는 표현을 l-value [C언어]대입 연산자와 l-value복합 대입 연산자1. 대입 연산자와 l-value프로그래밍에서 변수에 원하는 값을 설정할 때 대입 연산자를 사용하죠.당연히 대입 연산자 왼쪽(좌항)에는 상수 표현은 올 수 없어요.정수형 변수 i가 있을 때 i+3=7; 표현은 문법적 오류가 발생해요.i+3의 연산 결과는 상수이며 l-value로 사용할 수 없어요.#include int main(){ int i = 0;//초기화 i = 7;//변수 i에 7을 설정 i + 3 = 7;//i+3에 7을 설정. i+3의 연산 결과는 상수 return 0;} 위 코드를 빌드하였을 때 나오는 결과를 보면 l-value로 ..
안녕하세요. 언제나 휴일에 언휴예요.비트 자리 이동 연산, 쉬프트 연산 [C언어] 이번 강의는 비트 자리 이동 연산, 쉬프트 연산을 알아볼게요.1. 왼쪽 쉬프트 >1. 왼쪽 쉬프트 왼쪽 쉬프트 연산은 1자리를 이동할 때 2로 곱한 결과와 같습니다. 다음의 소스 코드는 부호 없는 정수 3을 4자리 왼쪽으로 자리 이동 시키는 소스 코드입니다.그리고 부호 있는 정수 -3을 4자리 왼쪽으로 자리 이동 시키는 소스 코드입니다.#include int main(){ unsigned u1 = 3, u2; u2 = u1 실행 결과는 다음과 같습니다.16진수: 3 3010진수: 3 4816진수: FFFFFFFD FFFFFFD010진수: -3 -48결과를 보면 부호 없는 정수는 원래 값 3에 2의 4승인 16..
안녕하세요. 언제나 휴일에 언휴예요.mask를 이용한 암호화 및 이진수 출력[C언어]이번 강의는 비트 연산을 이용한 mask입니다.^ mask를 이용하여 암호화하는 것과 & mask를 이용하여 이진수를 출력하는 실습이예요.1.^mask를 이용한 암호화2.&mask를 이용한 이진수 출력1. ^mask를 이용한 암호화비트 연산 이용하면 간단한 대칭형 암호화를 할 수 있어요.대칭형 암호화는 암호화할 때와 복호화할 때 같은 키를 이용하는 암호화를 말합니다.다음의 코드는 ^연산을 이용하여 평문을 암호화하고 복호화하는 예제입니다.#include int main(){ int pd = 0x12345678; int key = 0x2345873a; int sec = pd ^ key; int data ..
안녕하세요. 언제나 휴일에 언휴예요.비트 연산 & | ^ ~ [C언어] 이번 강의는 비트 연산입니다. 비트 연산은 같은 자리의 비트끼리 논리 연산을 수행합니다.그리고 C언어의 비트 연산의 피 연산자는 정수 형식이예요.1. 비트 연산 & | ^ ~2. 비트 and mask1. 비트 연산 & | ^ ~예를 들어 정수 6과 5의 비트 연산을 알아봅시다.정수 6은 이진수로 0000 0000 0000 0110이고 5는 0000 0000 0000 0101 입니다.만약 비트&(and)를 수행하면 다음 그림처럼 끝에서 세 번째 자리만 모두 1입니다. 이진수로 0000 0000 0000 0100입니다.따라서 6&5의 결과는 4입니다.만약 비트|(or)를 수행하면 다음 그림처럼 끝에서 세 자리는 둘 중 하나는 1입니다.이..
안녕하세요. 언제나 휴일에 언휴예요.비교 연산 [C언어] 이번 강의는 비교 연산입니다.1. 비교 연산2. 비교 연산에서 주의할 점1. 비교 연산비교 연산은 연산 기호 및 하는 일이 직관적입니다. 기본적인 비교 연산은 어려움이 없다는 것이죠.#include //표준 입출력 헤더int main(){ printf("%d\n", 1 2); printf("%d\n", 1 >= 2); return 0;}비교 연산의 연산 결과도 참이면 1, 거짓이면 0입니다.1101002. 비교 연산에서 주의할 점비교 연산을 이용하여 세 가지 이상의 값을 비교할 때는 논리 연산을 이용하세요. 수학에서 2C언어에서는 연산을 하나씩 수행합니다.22결국 0#include //표준 입출력 헤더int main(){ ..
안녕하세요. 언제나 휴일에 언휴예요.논리 형식과 논리 연산[C언어] 이번 강의는 논리 형식과 논리 연산을 다룰 거예요.1. 논리 형식2. 논리 값, 참과 거짓3. 논리부정(NOT) 연산자는 !4. 논리곱(AND) 연산자는 &&, 논리합(OR) 연산자는 ||5. 논리 연산에서 주의할 점 16. 논리 연산에서 주의할 점 21. 논리 형식C언어에는 논리 형식을 제공하지 않아요. 대신 기본 형식(char, short, int, long, float, double 등)과 메모리 주소처럼 수로 나타낼 수 있는 것은 모두 논리 형식으로 사용할 수 있습니다.이번 강의를 통해 피 연산자로 다양한 형식을 사용할 수 있다는 것을 느낄 수 있었으면 합니다.2. 논리 값, 참과 거짓C언어는 논리 형식을 제공하지 않습니다.논리..
안녕하세요. 언제나 휴일에 언휴예요.나머지 연산을 사용하면 편한 곳 [C언어 동영상] 이번에는 나머지 연산을 사용하여 문제를 해결하는 대표적인 예를 알아볼게요. 프로그램을 작성하다보면 0123401234012… 처럼 특정 범위 내의 수를 순환하며 사용할 때가 발생합니다.원형 큐에서 front와 rear를 이동시킬 때는 대표적인 예로 들 수 있어요.원형 큐다음처럼 코드를 작성하여 실행시켜 보면 어떻게 동작하는지 느낌이 오실 거예요./* https://ehpub.co.kr 언제나 C언어 나머지 연산, 이럴 때 사용하자. 0123401234012...*/#include //표준 라이브러리 헤더#include //표준 입출력 헤더int main(){ int i = 0; printf..
안녕하세요. 언제나 휴일에 언휴예요.실수 형식 double, float 표현과 출력 [C언어 동영상 강의] 이번 강의에서는 실수 형식 강의예요. 실수 형식을 표현하는 방법과 출력하는 방법을 알아봅시다.1. 실수 형식의 메모리 크기2. 실수 리터럴 표현3. 실수 출력 - 소숫점 이하 출력할 자리 표현4. 실수 출력 포멧 %f %g %e5. 실수 사용에서 주의할 점1. 실수 형식의 메모리 크기먼저 sizeof로 실수 형식의 메모리 크기를 알아보아요.#include //표준 입출력 헤더int main(void){ printf("sizeof(double):%d bytes, sizeof(float):%d bytes\n", sizeof(double),sizeof(float)); retur..
안녕하세요. 언제나 휴일에 언휴예요. 확장 문자 형식 wchar_t와 한글 문자 [C언어 동영상 강의]이번 강의는 확장 문자 형식 wchar_t와 한글 문자 표현을 다룰거예요.1. char 형식의 한계2. wchar_t 형식3. wchar_t 형식 크기 및 출력 함수1. char 형식의 한계이전 강의에서 char 형식은 ASCII 코드를 표현할 수 있는 문자 형식이라고 했었죠. 영문 알파벳이 아닌 한글처럼 ASCII 코드가 아닌 문자는 char 형식으로 표현하는데 한계가 있어요.한글 문자 하나를 char 형식으로 다루지 못하는 것이죠.#include //표준 입출력 헤더int main(){ char ch = 'ㄱ'; printf("%c\n", ch); return 0;}위 코드의 ..
안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 문자 형식 char와 ASCII 코드에 관해 다루기로 할게요.1. ASCII 코드와 char 형식 크기2. 숫자 문자, 소문자, 대문자 ASCII 코드 값 확인3. 문자 리터럴4. char 형식의 한계5. ASCII 코드1. ASCII 코드와 char 형식 크기 C언어는 미국에서 만들었죠. C언어의 문자 표현은 미국 표준 문자인 ASCII 코드를 표현하도록 만들었어요.ASCII , American Standard Code for Information Interchange C언어에서 문자를 표현할 때 char 형식을 사용합니다. char 형식은 미국의 표준 문자인 ASCII 코드를 표현할 수 있는 크기로 설계한 거예요. 영문 알파벳 소문자, 대문자, 숫자..
안녕하세요. 언제나 휴일에 언휴예요. 정수 형식과 표현 범위(char, short, int, long,...)[C언어 동영상 강의]이번 강의에서는 정수 형식과 표현 범위를 알아볼게요.== 다루는 내용1. 정수 형식의 종류2. 정수 형식의 메모리 크기3. 정수 형식의 표현 범위정수 형식의 종류C언어에서 제공하는 정수 형식은 다음처럼 여러 가지 정수 형식을 제공합니다.char, short, int, long, long longC언어에서 제공하는 정수 형식은 음수를 포함하지 않는 정수 형식도 제공합니다. unsigned 키워드가 붙는 형식은 모두 음수를 포함하지 않는 정수 형식입니다.unsigned char, unsigned short, unsigned int, unsigned long, …형식을 unsign..
안녕하세요. 언제나 휴일에 언휴예요. 정수 표현 및 출력 - 10진수, 8진수, 16진수 [C언어] 동영상 강의 이번 강의에서는 정수 표현과 출력을 알아봅시다.== 다루는 내용1. 정수 표현(10진수, 8진수, 16진수)2. 정수 출력 (10진수, 8진수, 16진수)3. 왜 8진수와 16진수 표현과 출력을 제공할까?1. 정수 표현(10진수, 8진수, 16진수)C언어에서 일반적인 수 표현은 당연히 10진수입니다. 8진수를 표현하려면 표현 앞에 숫자 0을 추가하세요.16진수를 표현하려면 표현 앞에 숫자 0과 알파벳 x를 추가하세요.#include //표준 라이브러리 헤더 파일#include //표준 입출력 헤더 파일int main()//프로그램 진입점{ //10진수 출력 printf("%d..