본문 바로가기
IT/프로그래밍

쉽게 풀어 쓴 C언어 Express 8장 프로그래밍 문제 해설

by nutrient 2020. 12. 9.
728x90
728x170

쉽게 풀어 쓴 C언어 Express 8장 프로그래밍 문제 해설

쉽게 풀어 쓴 C언어 Express 8장 프로그래밍 문제 해설

1.

#include <stdio.h>

int even(int n);

int absolute(int n);

int sign(int n);

int main(void) {

int n;

printf("정수를 입력하시오:");

scanf("%d", &n);

printf("even()의 결과: ");

if( even(n) == 1 )

printf("짝수\n"); else

printf("홀수\n");

printf("absolute()의 결과: %d\n", absolute(n));

printf("sign()의 결과: ");

if( sign(n) == 1 )

printf("양수\n"); else 

printf("음수\n");

return 0;

}

int even(int n) {

return (n%2==0)? 1: 0;

}

int absolute(int n) {

return (n>0)? n: -n;

}

int sign(int n) {

return (n>0)? 1: -1;

}

2.

#include <stdio.h>

double ftoc(double);

int main(void) {

double f,c;

printf("화씨온도를 입력하시오:");

scanf("%lf", &f);

c = ftoc(f);

printf("섭씨온도는 %f입니다.\n", c);

return 0;

}

double ftoc(double f) {

return (5.0/9.0)*(f-32.0);

}

3.

#include <stdio.h>

double get_radius() {

double r;

printf("원의 반지름을 입력하시오:");

scanf("%lf", &r);

return r;

}

double cal_area(double r) {

return 3.141592*r*r;

}

4.

int main(void) {

double r, area;

r = get_radius();

area = cal_area(r);

printf("원의 면적은 %f입니다\n", area);

return 0;

}

#include <stdio.h>

int get_tax(int income);

int main(void) {

int income;

printf("소득을 입력하시오(만원):");

scanf("%d", &income);

printf("소득세는 %d입니다.\n", get_tax(income));

return 0;

}

int get_tax(int income) {

if( income > 1000 ) return (int) (income*0.1); else return (int) (income*0.08);

}

5.

#include <stdio.h>

#include <math.h>

double sin_degree(double degree);

int main(void) {

double degree;

for (degree=0.0; degree <= 180.0; degree += 10.0)

printf("sin(%f)의 값은 %f\n", degree, sin_degree(degree));

return 0;

}

double sin_degree(double degree) {

return sin( (3.141592*degree)/180.0);

}

6.

#include <stdio.h>

#include <stdlib.h>

int b_rand();

int main(void) {

printf("%d\n", b_rand());

printf("%d\n", b_rand());

printf("%d\n", b_rand());

printf("%d\n", b_rand());

printf("%d\n", b_rand());

return 0;

}

int b_rand() {

return rand()%2;

}

7.

#include <stdio.h>

#include <stdlib.h>

int b_rand();

int main(void) {

int answer, coin;

char c;

while(1) {

printf("앞면 또는 뒷면(1 또는 0):");

scanf("%d", &answer);

coin = b_rand();

if( coin == answer )

printf("맞았습니다.\n"); else

printf("틀렸습니다.\n");

printf("계속하시겠습니까?(y 또는 n):");

scanf(" %c", &c);

if( c == 'n' )

break;

}

return 0;

}

int b_rand() {

return rand()%2;

}

8.

#include <stdio.h>

#include <stdlib.h>

double f_rand();

int main(void) {

printf("%f\n", f_rand());

printf("%f\n", f_rand());

printf("%f\n", f_rand());

printf("%f\n", f_rand());

printf("%f\n", f_rand());

return 0;

}

double f_rand() {

return rand()/(double)RAND_MAX;

}

10.

#include <stdio.h>

int is_multiple(int n, int m);

int main(void) {

int x, y;

printf("첫번째 정수를 입력하시오:");

scanf("%d", &x);

printf("두번째 정수를 입력하시오:");

scanf("%d", &y);

if( is_multiple(x, y) == 1 )

printf("%d는 %d의 배수입니다.\n", x, y); else

printf("%d는 %d의 배수가 아닙니다.\n", x, y);

return 0;

}

int is_multiple(int n, int m) {

if( n%m==0) return 1; else return 0;

}

11.

#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(void) {

double x1,y1, x2,y2;

printf("첫번째 점의 좌표를 입력하시오:(x, y)");

scanf("%lf %lf", &x1, &y1);

printf("두번째 점의 좌표를 입력하시오:(x, y)");

scanf("%lf %lf", &x2, &y2);

printf("두점 사이의 거리는 %f입니다.", get_distance(x1, y1, x2, y2));

return 0;

}

12.

#include <stdio.h>

int main(void) {

int i, j;

for (i=2; i<100 ; i++) {

if( is_prime(i) == 1 )

printf("%d\n", i);

}

return 0;

}

int is_prime(int x) {

int i;

for (i=2; i<x ; i++) {

if( x%i == 0 ) return 0;

}

return 1;

}

13.

#include <stdio.h>

#include <math.h>

long long factorial(int n) {

int i;

long long result = 1;

for (i = 1; i <= n; i++)

result *= i;

// result = result * i

return result;

}

int main(void) {

int i;

double sum=1.0;

int n;

printf("어디까지 계산할까요: ");

scanf("%d", &n);

for (i=1;i<=n; i++)

sum += 1.0/factorial(i);

printf("오일러의 수는 %f입니다. \n", sum);

return 0;

}

14.

#include <stdio.h>

int is_leap(int y);

int main(void) {

int year;

printf("연도를 입력하시오: ");

scanf("%d", &year);

if( is_leap(year) == 1 )

printf("%d년은 366일입니다.\n", year); else

printf("%d년은 365일입니다.\n", year);

return 0;

}

int is_leap(int y) {

return (y%4==0)&&(y%100!=0) || (y%400);

}

15.

#include <stdio.h>

int round(double a);

int main(void) {

double a;

printf("실수를 입력하시오: ");

scanf("%lf", &a);

printf("반올림한 값은 %d입니다.\n", round(a));

return 0;

}

int round(double a) {

return (int)(a+0.5);

}

16.

#include <stdio.h>

#include <math.h>

int f_equal(double x, double y);

int main(void) {

double a, b;

printf("실수를 입력하시오: ");

scanf("%lf", &a);

printf("실수를 입력하시오: ");

scanf("%lf", &b);

if( f_equal(a, b) == 1 )

printf("같음\n"); else

printf("다름\n");

return 0;

}

double f_abs(double x) {

if( x > 0 ) return x; else return -x;

}

double f_min(double x, double y) {

if( x > y ) return y; else return x;

}

int f_equal(double x, double y) {

double value;

value = f_abs(x - y)/f_min(f_abs(x), f_abs(y));

if( value < 0.000001 ) return 1; else return 0;

}

17.

#include <stdio.h>

#include <stdlib.h>

void print_menu();

void check_menu_number();

void menu_hamberger();

void menu_cheeseberger();

void menu_sandwitch();

int main(void) {

check_menu_number();

return 0;

}

void menu_hamberger() {

printf("햄버거 메뉴 호출\n");

}

void menu_cheeseberger() {

printf("치즈버거 메뉴 호출\n");

}

void menu_sandwitch() {

printf("샌드위치 메뉴 호출\n");

}

void print_menu() {

printf("1. 햄버거\n");

printf("2. 치즈버거\n");

printf("3. 샌드위치\n");

printf("4. 종료\n");

printf("원하는 메뉴를 선택하시오:");

}

void check_menu_number() {

int value;

while(1) {

print_menu();

scanf("%d", &value);

if( value <1 || value > 4 )

continue; else if( value == 1)

menu_hamberger(); else if( value == 2)

menu_cheeseberger(); else if( value == 3)

menu_sandwitch(); else if( value == 4)

return;

}

}
728x90
그리드형

댓글