C언어
[C언어] 백준 3003. 킹, 퀸, 룩, 비숍, 나이트, 폰
문제 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. 출력 첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. ..
[c언어] 백준 10757. 큰 수 A + B
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A,B strlen(B) ? strlen(A) : strlen(B); 이제 len만큼 각 자릿수를 더한다. 각 자리에는 0~9가 char로 저장되어 있다. 이 문자를 먼저 숫자로 변환해야 한다. 숫자 0의 아스키 코드는 48이다. 각 자리에 48을 빼고 int형으로 저장하면 문자를 숫자로 바꿀 수 있다. 문자끼리 뺄셈을 해도 같은 결과이다. 예를 들어 A - C는 -2이다. 여기에 받아올림이 발생하면 1을 더해줘야 하므로 carry값도 함께 더한다. int sum = A[i] - '0' + B[i] - '0' + carry; 두 숫자의 덧셈이니 받아올림하는 수는 최대 1이다. ..
[C언어] 백준 3009. 네 번째 점
문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 직사각형의 네 번째 점의 좌표를 출력한다. 구상 $x_{1}$과$x_{2}$가 같으면 $x_{4}$는 $x_{3}$와 같다. $x_{1}$과 $x_{3}$가 같으면 $x_{4}$는 $x_{2}$와 같다. 아니면 $x_{4}$는 $x_{1}$와 같다. $y$도 마찬가지다. 코드 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int xArr[4], yArr[4];//좌표를 저장할 배열 for (int i = 0; i < ..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 11(1번~10번)
1. 구조체 템플릿 정의와 구조체 변수 선언의 차이를 설명하시오. 구조체 템플릿은 사용자 정의 자료형을 만드는 것이다. 구조체를 위한 기억 장소를 할당받기 위해서는 구조체 변수를 선언해야 한다. 2. 다음 코드는 두 사각형 중 면적이 큰 사각형의 가로, 세로, 면적 정보를 larger에 구하는 프로그램이다. 밑줄 친 곳에서 잘못된 것을 찾아 그 이유를 설명하시오. struct rectangle { int width = 5, height = 2, area;//구조체 템플릿을 정의할 때 변수 내용을 초기화할 수 없음 } int main() { rectangle r1 = { 3, 7 }, r2 = { 2, 5 };//구조체임을 명시해야 함 int larger;//구조체로 정의해야 함 r1.area = r1.w..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 10(16번~21번)
16. [프로그램 8-17]의 compute_avg 함수는 전달된 인수를 배열로 선언하여 처리한다. compute_avg 함수가 포인터를 이용하여 처리하도록 수정하시오. #include #define N 4 double compute_avg(int *p); // 함수의 원형 선언 int main() { int notebook[N] = { 2507, 2232, 2009, 2890 }; int pen[N] = { 4527, 5370, 4923, 6097 }; double average; // 노트의 평균 판매수 구하기 average = compute_avg(notebook); printf("노트 평균 판매수: %.1lf \n", average); // 펜의 평균 판매수 구하기 average = compute..
(C언어) 백준 1929. 소수 구하기
문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 구상 에라토스테네스의 체를 이용한다. 코드 #include #include #define NUM 1000000 int main(void) { int i, j, start, end; scanf("%d%d", &start, &end); int* prime = (int*)malloc(sizeof(int) * NUM + 1); //배열 동적할당 for (i = 0; i
c언어 콘솔에서 음악 동시에 재생하기(mcisendCommand, playsound)
1.PlaySound() #include #pragma comment (lib, "winmm.lib") #include ; PlaySound(TEXT(wav파일의 위치), NULL, 옵션1 | 옵션2) 가장 간단한 방법은 PlaySound 함수를 이용하는 것이다. 이 함수를 이용하기 위해선 mmsystem.h 가 필요하다. 그리고 별도의 라이브러리로 winmm.lib가 필요하다. #pragma로 추가해주면 된다. PlaySound(TEXT("bgm.wav"), NULL, SND_ASYNC) // 일반 재생 PlaySound(TEXT("bgm.wav"), NULL, SND_ASYNC | SND_LOOP) // 반복 재생 docs.microsoft.com/en-us/previous-versions/dd743..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 10(11, 12, 13, 14, 15)
11. 다음 프로그램은 main의 두 정수 a와 b에 대해 나누기를 한 몫과 나머지를 quotient와 remainder에 구하여 출력하기 위한 것이다. 그러나 프로그램을 실행하면 잘못된 결과가 나온다. 프로그램에서 잘못된 곳을 찾아 이유를 설명하고 바르게 수정하시오. #include void division(int x, int y, int q, int r); int main(void) { int a = 75, b = 8, quotient, remainder; division(a, b, quotient, remainder); printf("%d / %d = %d\n", a, b, quotient); printf("%d %% %d = %d \n", a, b, remainder); return 0; } //..