프로그래밍/C언어

    <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언어 콘솔에서 음악 동시에 재생하기(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; } //..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 10(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    1. 일반 변수와 포인터 변수가 저장하는 값의 차이점을 적으시오. 일반 변수는 프로그램에서 사용하는 데이터를 직접 저장하고, 포인터 변수는 데이터가 저장된 주기억장치의 주소를 저장한다. 2. 다음 코드와 같이 int형 변수 sum이 선언되어 있을 때 ptr이란 포인터 변수가 sum을 가리키게 한 후 ptr을 이용하여 sum에 저장된 값을 출력하도록 밑줄을 채우시오. int sum = 0; int* ptr;//ptr 선언 ptr = ∑//ptr이 sum을 가리키기 printf("sum = %d \n", *ptr);//ptr을 이용하여 sum 값을 출력하기 3. 다음 코드의 결과를 추정함으로써 무엇을 하기 위한 코드인지 적고 프로그램으로 완성하여 실행한 다음 추정한 결과와 실행결과를 비교해보시오. int a..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 9 (1, 2, 3, 4, 5)

    1. 다음은 출금 서비스를 위한 보기용 프로그램이다. 프로그램의 14, 16, 28, 29, 31, 32, 41행에서 변수 참조 규칙을 어기고 있는데, 그 이유를 설명하시오. #include int check_PW(); //비밀번호 확인 서비스 void withdraw(); //출금 서비스 char name[10] = "한국은행"; //서비스 업체 이름 int main(void) { char reply; int balance = 100000, system_PW = 1111; //계좌의 현재 잔액, 시스템 비밀번호 do { printf("%s의 출금 서비스입니다.", name); if (check_PW()) withdraw(); else { printf("%d원의 출금을 요청하셨으나", amount); p..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (11, 12, 13)

    11. [프로그램 8-32]를 반복문 형태로 수정하시오. #define _CRT_SECURE_NO_WARNINGS #include void palindrome(int n); int main() { int n; printf("양의 정수 n을 입력하면 거꾸로 출력하는 프로그램입니다. n은? "); scanf("%d", &n); palindrome(n); return 0; } // 양의 정수 n을 거꾸로 출력하는 재귀적 함수 void palindrome(int n) { // n의 끝자리 값 출력하기 printf("%d", n % 10); // n이 10단위 이상의 값이라면 재귀 호출로 나머지 자리를 출력하기 if (n >= 10) palindrome(n / 10); } #define _CRT_SECURE_NO..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (6,7,8,9,10)

    6. [프로그램 8-23]의 find_min 함수는 배열의 최솟값만 반환하므로 최솟값이 배열의 어느 원소에 해당하는지는 알 수 없다. 배열 원소의 첨자를 반환하는 함수 index를 정의해 이 최솟값이 배열의 어느 원소에 해당하는지 나타내도록 [프로그램 8-23]을 수정하시오. [프로그램 8-23] #include #define SIZE 5 // 함수의 원형 선언 int find_min(int arr[]); void print_arr(int arr[]); // main 함수의 정의 int main() { int f[SIZE] = {3, 0, -30, -20, -1}; // 배열을 선언과 동시에 초기화하기 int min; // 최솟값 구하기 min = find_min(f); // 배열 내용 출력하기 prin..