본문 바로가기
문제풀이/문제풀이 중심의 C 언어 연습

[C] [문제풀이 중심의 C 언어 연습] 4장 실습 문제

by 민됴리 2020. 8. 10.
반응형

1999년 9월 1일에 발행된

김용일, 강문설 저자의

문제풀이 중심의 C언어 연습

4장 실습 문제입니다.

 

책에 오타나 오류가 있는 문제가 적지 않게 있는데

그런 부분에 대해서는 언급해 드리겠습니다.

 

궁금한 점은 댓글로 남겨주세요.

 


 

4-1. 두 정수를 입력받아서 문제에 주어진 수식을 계산

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int a;
	int b;

	printf("정수 2개 입력: ");
	scanf(" %d %d", &a, &b);
	printf("(a + b) / (a - b) = %f", (double)(a + b) / (a - b));

	return 0;
}

 

4-2. 주어진 코드의 결과 도출 후 이유 설명

결과

이유

101

101

103

102

전위형 증감 연산자로 인해서 n(100)의 값이 영구적으로 증가합니다. (100->101)

후위형 증감 연산자로 인해서 n(101)이 사용된 후 영구적으로 증가합니다. (101->102)

n(102)의 값에 1을 더한 결과를 출력합니다. 이때 n(102)의 값은 변하지 않습니다.

n(102)의 값 출력합니다.

 

4-3. 두 정수를 입력받아 몫과 나머지 계산

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int num1, num2;

	printf("두 수를 입력하세요: ");
	scanf(" %d %d", &num1, &num2);
	printf("몫: %d\n", num1 / num2);
	printf("나머지: %d", num1 % num2);

	return 0;
}

 

4-4. 백 단위의 정수값을 입력받아 각 단위의 값 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int num;

	printf("입력: ");
	scanf(" %d", &num);
	printf("백의 자리: %d\n", num / 10 / 10);
	printf("십의 자리: %d\n", num / 10 % 10);
	printf("일의 자리: %d", num % 10);

	return 0;
}

 

4-5. 세 과목의 점수를 입력받아서 평균 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int kor;
	int eng;
	int math;

	printf("국어: ");
	scanf(" %d", &kor);
	printf("영어: ");
	scanf(" %d", &eng);
	printf("수학: ");
	scanf(" %d", &math);
	
	printf("\n평균: %.1f", (double)(kor + eng + math) / 3);

	return 0;
}

 

4-6. 두 정수를 입력받아서 큰 수 출력 (3항 연산자 사용)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int num1, num2;

	printf("두 수를 입력하세요: ");
	scanf(" %d %d", &num1, &num2);
	printf("큰수: %d", (num1 > num2) ? num1 : num2);

	return 0;
}

 

4-7. 주어진 코드의 결과 도출 후 이유 설명

결과

이유

1010

no(100)가 count(20)보다 큰 값을 가지고 있는 것은 참이기 때문에 1이 출력됩니다.

count(20)에 4를 곱한 값인 80이 no(100)보다 코지 않기 때문에 거짓인 0이 출력됩니다.

no != 100은 거짓이므로 0이고 count >= 20은 참인 1입니다. 두 결과가 OR연산자를 통해서 1이 출력됩니다.

no <= 100은 참이고 count > 20은 거짓입니다. AND 연산자에 의해 0이 출력됩니다.

 

4-8. 정수를 입력받아 16으로 나눈 수의 나머지 출력 (나머지 연산자 사용 불가)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int num;

	printf("정수: ");
	scanf(" %d", &num);
	printf("%d", num - 16 * (num >> 4));

	return 0;
}

 

4-9. 두 정수를 입력받아서 첫번째 정수를 두번째 정수만큼 왼쪽으로 시프트 연산

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int no;
	int count;

	printf("값을 입력하세요: ");
	scanf(" %d", &no);
	printf("shift 하고자 하는 값: ");
	scanf(" %d", &count);
	printf("결과: %d", no << count);

	return 0;
}

 

4-10. 음수와 양수를 입력받아서 음수를 양수만큼 오른쪽으로 시프트 연산

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int no;
	int count;

	printf("값을 입력하세요: ");
	scanf(" %d", &no);
	printf("shift 하고자 하는 값: ");
	scanf(" %d", &count);
	printf("결과: %d", no >> count);

	return 0;
}

 

반응형