연습문제
<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 (1,2,3,4,5)
1. 배열에 저장된 값 중 사용자가 입력한 값이 몇 개 들어 있는지 표시하려고 한다. 이 프로그램에서 밑줄 친 곳에는 무언가가 생략되어 있거나 에러가 난다. 잘못된 이유와 어떻게 수정해야 하는지 적으시오. #include #define N 30 void print_title(); void main() { int result[N] = { ... }; int count, i, target; scanf("%d", &target); print_title; count = frequency(result[N], target); return 0; } void print_title() { ... } int frequency(int arr[N], value) { ... } void main() : 함수 내에서 0을 반환하..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 7(11, 12)
11. 2*3 행렬 A와 3 * 4 행렬 B를 곱한 결과인 2 * 4 행렬 C를 구하여 다음과 같이 출력하시오. #include #define M 2 #define N 3 #define O 4 int main() { int a[M][N] = { {1,2,3}, {4,5,6} }; int b[N][O] = { {3,4,5,6}, {1,2,4,3}, {4,2,6,1} }; int c[M][O] = { 0 }; int i, j, k; for (i = 0; i < M; i++) { for (j = 0; j < O; j++) { for (k = 0; k < N; k++) { c[i][j] += a[i][k] * b[k][i]; } } } for (i = 0; i < M; i++) { printf("["); for..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 7(1, 2, 3, 4, 5)
1. 1차원 배열의 크기 즉 원소수가 10일 때 유효한 첨자의 범위를 적으시오. 0~9 2. 다음 문장 중 틀린 것을 고르시오. ① 다음과 같이 배열을 선언한 후 대입문으로 배열명에 배열 원소들을 한꺼번에 저장할 수 있다. int a[5] a = {1, 2, 3, 4, 5}; ② 배열의 여러 원소 중 한 개를 지정하기 위해 '배열명[2]'와 같이 [] 안에 명시하는 정수를 첨자라고 한다. ③ 1차원 배열 ary의 크기 즉 배열의 원소수가 10이라면 첫 원소는 ary[1], 마지막 원소는 ary[10]으로 참조한다. - 첫 원소는 ary[0], 마지막 원소는 ary[10]으로 참조한다. ④ int형 자료 10개, double형 자료 10개, char형 자료 10개 모두 30개의 자료를 하나의 배열에 저장할..
(C언어)프로젝트 오일러(Project Euler)10. 이백만 이하 소수의 합
문제 10 이하의 소수를 모두 더하면 2 + 3 + 5 + 7 = 17 이 됩니다. 이백만(2,000,000) 이하 소수의 합은 얼마입니까? 코드 #include #include #include #define NUM 2000000 int main(void) { int i, j; int* prime= (int*)malloc(sizeof(int) * NUM); //배열 동적할당 long long sum = 0; for (i = 2; i