8장 Exercise & Programming
8장 Exercise
1. 1번
2. 3번: y = sin(x) + sqrt(x * x * -2 * a) + ldexp(1.0 * 10;
3. 1번, 4번
4. 1번
5. a. 1.72(double)
b. 1(double)
c. 2(double)
6. a. 0-9
b. 2-6
7. a. y = log10(x) + exp(x)
b. y = sin(x) + sqrt(x * x * -2 * a) + ldexp(1.0 * 10;)
8. a. void printf_error(int n);
b. double larger_of(double x, double y);
c. void side_effect(void);
9. int f(void) - return 10+20;
coid g(int, int) - return:
double h(double, int); - return 1.0;
10. int f(int n):
printf(“result: %d\n:, f(10));
return result;
11. a. double f(double x, double y) y의 자료형 정의 불분명
b. int f(double x, double y) 괄호제거
c. int f(int x, int y); 괄호제거
d. float get_area(float radius, float pi); 자료형 명시
12.
int sum_one2n(int n){
int result = 0;
for (; n > 0; n--)
result = +n;
13. a. int half_of(int x) - ;제거
b. printf_message(); 입력형과 실제 입력 일치해야한다
c. double half_of(double), double half_of(double x) 원형 입력형 자료형 불일치
d. sum = x + y; -> return x + y; 변수 sum 선언 누락
e. int sum(void) 출력 안 한다고 선언 했으나 정수 출력함
8장 Programming
1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int even(int n);
int absoulte(int n);
int sign(int n);
int main() {
int n;
printf("정수를 입력하시오: ");
scanf("%d", &n);
printf("even()의 결과: %d\n", even(n));
printf("absoulte()의 결과: %d\n", absoulte(n));
printf("sign()의 결과: %d", sign(n));
}
int even(int n) {
return (n % 2 == 0) ? 1 : 0;
}
int absoulte(int n) {
return (n > 0) ? n : -n;
}
int sign(int n) {
return (n > 0) ? 1 : 1;
}
2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int is_multiple(int n, int m);
int main()
{
int n, m;
printf("첫 번째 정수를 입력하시오: ");
scanf("%d", &n);
printf("두 번째 정수를 입력하시오: ");
scanf("%d", &m);
if (is_multiple(n, m))
printf("%d는 %d의 배수입니다. ", n, m, n / m);
else
printf("%d는 %d의 배수가 아닙니다.", n, n);
}
int is_multiple(int n, int m)
{
if (n % m)
return 0;
else
return 1;
}
3.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
double get_bigger(double num1, double num2) {
return num1 > num2 ? num1 : num2;
}
int main() {
double num1, num2;
printf("실수를 입력하시오: ");
scanf("%lf %lf", &num1, &num2);
printf("큰 수는 %.1lf입니다", get_bigger(num1, num2));
return 0;
}
4.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int check_alpha(char a);
int main()
{
char a;
printf("문자를 입력하시오: ");
scanf("%c", &a);
printf("%c는 알파벳 문자입니다.", a);
return 0;
}
int check_alpha(char a)
{
if ('a' <= a && a <= 'z') || ('A' <= a && a <= 'Z')
return 1;
}
5.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
double get_radius() {
double r;
printf("원의 반지름을 입력하시오: ");
scanf("%lf", &r);
return r;
}
double cal_area(double r) {
return 3.141592 * r * r;
}
int main() {
double r;
r = get_radius();
printf("원의 면적은 %.2lf입니다.\n", cal_area(r));
return 0;
}
6.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int is_leap(int year);
int main() {
int year;
printf("연도를 입력하시오: ");
scanf("%d", &year);
if (is_leap(year))
printf("%d년은 윤년입니다 ", year);
else
printf("%d년은 윤년이 아닙니다", year);
}
int is_leap(int year) {
return ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0));
}
7.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int round(double f);
int main() {
double f;
printf("실수를 입력하시오: ");
scanf("%lf", &f);
printf("반올림한 값은 %d입니다.\n", round(f));
return 0;
}
int round(double f) {
return (int)(f + 0.5);
}
8.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int get_tax(int income);
int main() {
int income;
printf("소득을 입력하시오(만원): ");
scanf("%d", &income);
printf("소득세는 %d만원입니다", get_tax(income));
}
int get_tax(int income) {
if (income > 1000)
return (int)(80 + 0.1 * (income - 1000));
else
return (int)(income * 0.08);
}
9.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 주사위를 굴리는 함수
int roll_dice() {
return ((rand)() % 6) + 1;
}
int main() {
int u_total = 0, c_total = 0;
srand(time(NULL));
//주사위를 3번씩 던져서 점수 합산
for (int i = 0; i < 3; i++) {
u_total += roll_dice();
c_total += roll_dice();
}
//결과
printf("사용자 주사위= %d\n", u_total);
printf("컴퓨터 주사위= %d\n", c_total);
if (u_total < c_total) {
printf("컴퓨터 승리");
}
else if (u_total > c_total) {
printf("사용자 승리");
}
else {
printf("비겼습니다");
}
return 0;
}
10.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randint();
int main() {
srand(time(NULL));
for (int i = 0; i < 10; i++) {
printf("%d ", randint());
}
return 0;
}
int randint() {
return rand() % 81 + 10;
}
11.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//주사위 굴리는 함수
int roll_dice() {
return +rand() % 6;
}
int main() {
int user_total = 0;
int com_total = 0;
srand(time(NULL));
for (int i = 0; i < 3; i++) {
int user = roll_dice();
int com = roll_dice();
user_total += user;
com_total += com;
}
printf("사용자 주사위=(%d, %d, %d)=%d\n", roll_dice(), roll_dice(), roll_dice(), user_total);
printf("컴퓨터 주사위=(%d, %d, %d)=%d\n", roll_dice(), roll_dice(), roll_dice(), com_total);
if (user_total > com_total) {
printf("사용자 승리");
}
else if (user_total < com_total) {
printf("컴퓨터 승리");
}
else {
printf("무승부");
}
return 0;
}
12.
#include <stdio.h>
int get_first_digit(int n) {
while (n >= 10) {
n /= 10;
}
return n;
}
int main() {
int num = 1099999;
int first_digit = get_first_digit(num);
printf("정수를 입력하시오: %d\n", num);
printf("가장 상위 자리수: %d\n", first_digit);
return 0;
}
13.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//두 점 사이 계산 공식
double get_distance(double x1, double y1, double x2, double y2) {
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
double x1, y1, x2, y2;
printf("첫번째 점의 좌표를 입력하시오: ");
scanf("%lf %lf", &x1, &y1);
printf("두번째 점의 좌표를 입력하시오: ");
scanf("%lf %lf", &x2, &y2);
printf("두점 사이의 거리는 %f입니다.", get_distance(x1, y1, x2, y2));
return 0;
}
14.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int is_prime(int n) {
if (n < 2) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main() {
int n;
printf("양의 정수를 입력하시오: ");
scanf("%d", &n);
for (int j = 2; j <= n - 2; j++) {
if (is_prime(j) && is_prime(n - j)) {
printf("%d = %d + %d\n", n, j, n - j);
}
}
return 0;
}
15.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int factorial(int n);
int main() {
int i;
double result = 1;
printf("어디까지 계산할까요: ");
scanf("%d", &i);
for (; i > 0; i--) {
result += 1.0 / factorial(i);
}
printf("오일러의 수는 %lf입니다", result);
}
int factorial(int n) {
int result = 1;
for (; n > 1; n--)
result *= n;
return result;
}
16.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void show_menu(); // 메뉴 표시 함수
void deposit(int* balance); // 입금 처리 함수
void withdrawal(int* balance); // 출금 처리 함수
int main() {
int balance = 0;
while (1) {
int choice;
show_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
printf("잔고는 %d원입니다.\n", balance);
break;
case 2:
deposit(&balance); // 입금 처리 함수 호출
case 3:
withdrawal(&balance); // 출금 처리 함수 호출
break;
case 4:
printf("프로그램을 종료합니다.\n");
return 0;
default:
printf("잘못된 입력입니다.\n");
break;
}
}
return 0;
}
// 메뉴 표시 함수
void show_menu() {
printf("********** Welcome to Express ATM **********\n");
printf("<1> 잔액\n");
printf("<2> 입금\n");
printf("<3> 출금\n");
printf("<4> 종료\n");
printf("메뉴를 선택하시오: ");
}
// 입금 처리 함수
void deposit(int* balance) {
int deposit;
printf("입금 금액을 입력하시오: ");
scanf("%d", &deposit);
*balance += deposit;
printf("잔고는 %d원입니다.\n", *balance);
}
// 출금 처리 함수
void withdrawal(int* balance) {
int withdrawal;
printf("출금 금액을 입력하시오: ");
scanf("%d", &withdrawal);
if (withdrawal > *balance) {
printf("잔액이 부족합니다.\n");
}
else {
*balance -= withdrawal;
printf("잔고는 %d원입니다.\n", *balance);
}
}
9장 Exercise & Programming은 아래 클릭하시면 됩니다.
[쉽게 풀어쓴 C언어 Express] 9장 Exercise & Programming
[쉽게 풀어쓴 C언어 Express] 9장 Exercise & Programming
9장 Exercise & Programming 9장 Exercise 1. a. int number; b. double ratio; c. register int index; d. extern int counter; e. static int setting; 2. int a(전역 변수, 시작부터 종료까지, 외부) static int b(정적 전역, 시작부터 종료까
gomszone.tistory.com
'프로그래밍 > C언어' 카테고리의 다른 글
[쉽게 풀어쓴 C언어 Express 개정4판] 10장 Exercise & Programming (2) | 2024.02.12 |
---|---|
[쉽게 풀어쓴 C언어 Express 개정4판] 9장 Exercise & Programming (4) | 2024.02.12 |
[쉽게 풀어쓴 C언어 Express 개정4판] 7장 Exercise & Programming (10) | 2024.02.11 |
[쉽게 풀어쓴 C언어 Express 개정4판] 6장 Exercise & Programming (3) | 2024.02.11 |
[쉽게 풀어쓴 C언어 Express 개정4판] 5장 Exercise & Programming (8) | 2024.02.10 |
댓글