본문 바로가기

C Programming28

[C Console]Function Key(확장 키), 특수 키, 일반 문자 입력 코드를 받아오는 프로그램 커서 이동키, 특수키의 입력은 어떻게 정의되어있을까? 키보드의 입력은 스캔 코드로 정의되어있습니다. 지금은 생소한 단어가 되어버린 스캔 코드표 대신에 직접 키를 입력받아 어떤 코드가 입력되는지 알아보는 프로그램을 실행해보는 것도 좋은 방법입니다. 누르는 키의 종류를 판별해서 문자, 확장키 코드를 출력하는 프로그램 아래 코드는 누르는 키의 종류를 판별해서 문자, 확장키 코드를 출력하는 프로그램입니다. conio.h에 정의된 _getch() 입력 함수를 이용해서 기능 키(F1~F12), 확장키, 일반 문자 등 키보드의 입력을 받을 수 있는 프로그램이죠. q를 누르면 q의 코드를 출력하면서 종료하게 되어있습니다. //====================================================.. 2019. 4. 8.
[C언어 연습문제]강좌 14. Dynamic Array in C(도서관 책장, 책 페이지 수 쿼리, 조회 프로그램) 동적 배열의 활용 - 도서관 선반과 책 페이지 수 조회 프로그램 작성 학습(Study) & 목표(Objective) & 과제(Task) Snow Howler는 HuskyLand시 중앙 도서관 사서입니다. 그는 다음 형식의 요청을 처리해야 합니다.- 1 x y : x 번째 책장의 끝에 y page의 책을 추가해야 합니다.(유형 1)- 2 x y : x 번째 책장에 y번째 책의 page의 수를 출력해야 합니다. (유형 2)- 3 x : x 번째 책장에 있는 책이 몇 권인지 출력해야 합니다.(유형 3) Snow Howler에게는 교육부에서 투입한 조교 Oshie가 있습니다. Oshie는 경험이 없지만, 유형2와 유형3의 모든 쿼리를 처리할 수 있습니다. Snow Howler는 유형 1의 모든 쿼리를 처리할 수.. 2019. 4. 3.
[C언어 연습문제]강좌 13. Digit Frequency(숫자 빈도수 구하기) 학습(Study) & 목표(Objective) & 과제(Task) 주어진 문장 s는 알파벳과 숫자가 포함된 문장입니다. 주어진 문장 안에 각 숫자의 빈도수를 찾는 것이 목표입니다. 입력 형식(Input Format) 첫 번째 줄에 숫자가 포함된 문자열 num을 입력받습니다. 제약 조건(Constraints) 입력된 문자열 num은 1글자 이상이고, 1000글자 이하여야 합니다. 출력 형식(Output Format) 0에서 9까지의 각 숫자의 빈도수를 10개의 공백으로 구분하여, 한 줄에 표시합니다. 입력 예제(Sample Input) - 1 a11472o5t6 출력 예제(Sample Output) - 1 0 2 1 0 1 1 1 1 0 0 0, 3, 8, 9는 나오지 않았기 때문에 0이며, 1은 2번 나.. 2019. 3. 29.
[C언어 연습문제]강좌 12. Printing Tokens(문자열 토큰을 사용한 출력) 학습(Study) & 목표(Objective) & 과제(Task)단어가 포함된 문장 s가 주어지면, 각 단어를 출력하는 것이 목표이자 과제입니다. 입력 형식(Input Format) 문장 s를 첫 줄에 입력받습니다. 제약 조건(Constraints)문장의 길이는 1보다 크거나 같고, 1000자보다는 적거나 같아야 합니다. 출력 형식(Output Format) 새로운 줄 마다 각각의 단어를 표출합니다. 입력 예제(Sample Input) - 1 This is C 주어진 문자열에는 세 단어가 있습니다. {"This", "is", "C"}이 단어를 새로운 줄에 인쇄해야 합니다. 출력 예제(Sample Output) - 1 ThisisC 입력 예제(Sample Input) - 2Learning C is fun .. 2019. 3. 26.
[C언어 연습문제]강좌 11. Array Reversal(배열 반전, 요소 뒤집어 출력) 학습(Study) & 목표(Objective) & 과제(Task)크기 n의 배열을 역순으로 만들어 봅시다.예제배열 arrarr = [1, 2, 3, 4, 5]반전된 배열arr = [5, 4, 3, 2, 1] 입력 형식(Input Format) 첫 줄에 배열의 크기를 나타내는 정수 n이 표시됩니다. (입력)다음 줄에는 n개의 공백으로 구분된 정수 배열의 요소가 표시 됩니다. 제약 조건(Constraints)i는 배열의 요소(index)출력 형식(Output Format) 출력은 배열을 인쇄할 편집기에서 주어진 코드로 출력합니다.주어진 배열을 역순으로 표시하면 됩니다. 입력 예제(Sample Input) - 1 616 13 7 2 1 12 참고 : 배열 arr = [16, 13, 7, 2, 1, 12] 출력.. 2019. 3. 22.
[C언어 연습문제]강좌 10. 1D Arrays in C(malloc - 동적 배열 만들기) 학습(Study) & 목표(Objective)배열은 정해진 유형의 고정된 값을 갖는 컨테이너 객체입니다. C언어에서는 int arr[n]; 과같이 n의 크기를 갖는 정수형 배열 arr를 선언할 수 있습니다. int arr[n] 배열은 컴파일 시간에 메모리가 할당되는 정적 배열입니다. C언어에서는 malloc 함수를 사용하여 프로그램 실행 중에 heap 메모리에 동적으로 배열을 생성할 수 있습니다. 사이즈가 n인 정수형 배열 arr를 만드는 방법입니다.int *arr = (int*)malloc(n * sizeof(int)); 여기서 arr는 배열의 처음 시작 주소를 갖는 포인터를 지칭합니다. 과제(Task) 이 연습문제에서는 배열의 크기, 배열의 요소를 입력받고, 크기가 n인 정수형 동적 배열을 생성하여 .. 2019. 3. 20.
[C언어 연습문제]강좌 9. Printing Pattern using Loops(숫자가 둘러진 대칭 사각형 패턴 인쇄하기) 반복문 패턴 표출 - 정수 n 만큼 둘러진 대칭 사각형 패턴 인쇄하기. 학습(Study) & 목표(Objective)easy 난이도를 벗어나는 문제가 나왔습니다. 1부터 n까지 과제(Task) 양식의 패턴을 인쇄하는 문제입니다. 과제(Task) 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 5 5 4 3 3 3 3 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 2 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 3 4 5 5 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5입력 형식(Input Format) 정수형 변수 n을 하나 입력받습니다. 제약 조건(Constraints) 출력 형식(Output Format) 과제에 언급된 패턴을 표준 출력으로.. 2019. 3. 19.
[C언어 연습문제]강좌 8. Bitwise Operators(과제를 통한 비트 연산자의 활용) 학습(Study) & 목표(Objective)C에서 비트 연산자를 사용하는 문제를 풀어보려고 합니다. CPU 내부에는 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)이 비트 수준에서 수행됩니다. C 프로그래밍에서 비트 수준의 연산을 수행하려면, 비트 연산자를 사용해야 합니다. AND 비트 연산자는 & 입니다. 해당하는 2개의 피연산자가 모두 1이면, 1을 반환합니다. 피연산자 중 하나라도 0이면, 0을 반환합니다.OR 비트 연산자는 | 입니다. 해당하는 2개의 피연산자가 하나라도 1이면, 1을 반환합니다. XOR 비트 연산자는 ^ 입니다. 두 피연산자의 해당 비트가 반대이면, 1을 반환합니다. 예를 들어 int형 정수 3과 5가 있으면, 아래처럼 되겠죠.3 = 00000011 (In Binary, 2진수)5 = .. 2019. 3. 18.
[C언어 연습문제]강좌 7. For Loop in C(C언어 for문) 학습(Study) & 목표(Objective)이번에는 반복문 중에서 for 문을 사용하여 문제를 해결해보려고 합니다. for 문은 반복적인 프로그래밍 구문을 실행할 수 있는 반복으로, 표현 식은 다음과 같습니다.for ( ; ; ) { }표현식 1은 일반적으로, for 반복문이 종료되기 위한 플래그 조건을 제어하는 변수를 초기화하는 데 자주 사용됩니다.표현식 2는 반복문의 종료 조건을 검사합니다. 표현식2의 조건이 거짓으로 판단되면, 반복문의 반복은 종료됩니다.표현식 3은 플래그나 변수를 갱신하는 데 많이 사용됩니다.for문의 예제코드int i = 0;for(i = 0; i < 10; i++){...} 과제(Task) 입력받은 두 정수[a, b] 사이의 값을 출력한다. 출력하려는 정수를 n이라고 했을 때.. 2019. 2. 27.
[C언어 연습문제]강좌 6. Playing With Characters(문자 입력), scanf()로 공백 입력받기 학습(Study) & 목표(Objective)scanf() 함수 사용법은 2번째로 나왔어야 됐는데, 누락이 되어 6번째로 밀렸네요. 가볍게 봐주시면 좋겠습니다. C언어에서 문자열이나 문장, 문자를 입력받을 때 어떻게 입력을 받을 수 있을까요? 다양한 방법이 있지만, 가장 먼저 접하게 되는 것이 scanf() 함수입니다. 말 그대로 format의 형식대로 무엇인가를 scan 한다는 의미이죠. ch 변수에 하나의 문자를 입력받는 방법은 scanf("%c", &ch); 로 사용하실 수 있습니다. 그리고 printf("%c", ch); 로 표준 출력 화면(모니터)에 표시하실 수 있고요. char ch;scanf("%c", &ch);printf("%c", ch); C언어의 scanf 함수는 또 문자열을 입력받을 .. 2019. 2. 19.
[C언어 연습문제]강좌 5. Conditional Statements in C(C언어 if 조건문), 숫자 조건을 영어로 표현하기) 학습(Study) & 목표(Objective)아무도 읽지 않아 슬픈 일기 강좌가 되어가고 있습니다. 이번 시간에는 if 문을 사용한 예제 문제를 풀어보려고 합니다.if와 else는 C언어와 C++ 언어에서 가장 많이 사용하는 조건문으로, 여러 종속 조건 중에 실행을 안 하거나 하나 이상의 조건문을 실행할 수 있어요. if 문은 condition 조건을 만족할 때, 중괄호로 묶인 statement1 구문 실행을 시작합니다.if (condition) { statement1;...} if - else 문은 condition 조건을 만족하면 statement1이 포함된 중괄호 부분을 수행하고, 조건에 만족하지 못하면 중괄호로 묶인 else 구문 statement2를 수행합니다.if (condition) {sta.. 2019. 2. 18.
[C언어 연습문제]강좌 4. Pointers in C(포인터로 2개의 변수를 반환하는 함수 구현) 학습(Study)여기서는 C언어의 포인터의 기본적인 사용 방법을 구현하는 방법을 배울 수 있습니다. C언어에서 포인터는 주로 함수에서 여러 데이터 간의 메모리 주소를 공유하는 방법으로 많이 쓰입니다. 함수가 소유권이 없는 변수 내용을 수정해야 할 때마다 주로 사용됩니다. 변수의 메모리 주소에 접근하려면 & 기호를 붙여서 사용해야 합니다. 예를 들어 val 변수의 주소에 접근하려면 &val을 사용해서 val 변수의 주솟값을 반환받을 수 있습니다. 이 메모리 주소가 포인터에 할당되어, 다양한 함수에서 공유할 수 있습니다. int *p = &val; 을 예를 들면, val 변수의 메모리 주소가 p 포인터에 할당된다고 보면 됩니다. 변수명 앞에 * 기호를 사용하면, 포인터의 메모리 내용에 접근하여 값을 읽을 수.. 2019. 2. 16.