" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 책 알려주는 남자 :: 쉽게 풀어쓴 C언어 Express 8장 Programming

8장 Programming


1.

#include <stdio.h>


int even(int n);

int absolute(int n);

int sign(int n);


void main()

{

int n;

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

scanf("%d", &n);

if(even(n) == 0)

printf("even()의 결과: 홀수\n");

else if(even(n) == 1)

printf("even()의 결과: 짝수\n");

else if(even(n) == 2)

printf("even()의 결과: 0\n");

else

printf("even()의 결과: 음수\n"); 

if(absolute(n) == 1)

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

else

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

if (sign(n) == 1)

printf("sign()의 결과: 양수\n");

else if (sign(n) == 0)

printf("sign()의 결과: 0\n");

else 

printf("sign()의 결과: 음수\n"); 

}


int even(int n)

{

if (n%2 == 1) return 0;

else if (n == 0) return 2;

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

else return -1;

}


int absolute(int n)

{

if (n>=0) return 1;

else return -1;

}


int sign(int n)

{

if (n>0) return 1;

else if (n=0) return 0;

else return -1;

}


2.

#include <stdio.h>


double f_to_c(double f);

void main()

{

double f;

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

scanf("%lf", &f);

printf("썹씨 온도는 %lf도입니다.", f_to_c(f));

}


double f_to_c(double f)

{

double c;

c = 5.0/9.0*(f-32);

return c;

}


3.

#include<stdio.h>

#define PI 3.14


double cal_area(double radius);


void main()

{

double radius;

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

scanf("%lf", &radius);

printf("원의 면적은 %lf입니다", cal_area(radius));

}


double cal_area(double radius)

{

double v;

v = PI*radius*radius;

return v;

}


4.

#include<stdio.h>


int get_tax(int income);


void main()

{

int income;

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

scanf("%d", &income);

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

}


int get_tax(int income)

{

int t;

if(income <= 1000)

t = income*0.08;

else 

t = income*0.1;

return t;

}


5.

#include <stdio.h>

#include <math.h>

#define PI 3.141592


double sin_degree(double degree);


void main()

{

double degree;

for(degree=0; degree<=180; degree = degree +15)

printf("sin(%d)의 값은 %lf\n", (int)degree, sin_degree(degree));

}


double sin_degree(double degree)

{

double r;

r = sin(PI*degree/180);


return r;

}


6.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


int b_rand(int x);


void main()

{

int x, i;

srand(time(NULL));

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

printf("%d ", b_rand(x));

}


int b_rand(int x)

{

x = rand()%2;

return x;

}


7.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


int b_rand(int x);


void main()

{

int x, y;

char z;

srand(time(NULL));

do

{

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

scanf("%d", y);

if(b_rand(x)==y)

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

else

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

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

scanf("%c", &z);

printf("\n");

} while(z=='y');

}


int b_rand(int x)

{

x = rand()%2;

return x;

}


8.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


double f_rand(double x);


void main()

{

double x; 

int i;

srand(time(NULL));

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

printf("%lf ", f_rand(x));

}


double f_rand(double x)

{

x = rand()/(double)RAND_MAX*1;

return x;

}


짤막 토막지식! - rand()/ (float or double)RAND_MAX

rand : 내부에 정의되어 있는 테이블에서 현재 시드에 맞는 수를 반환하는 함수

RAND_MAX : rand 함수로 반활될 수 있는 수의 최대값 (0x7fff) , 주로 rand 함수를 통해 0.0 ~ 1.0의 실수를 랜덤하게 반환받기 위해 사용한다

기존 공식인 'rand()%최대값 +1' 은 정수 난수밖에 구할 수 없고, 별도의 계산식을 통해 실수 난수를 구할 수 있다. 

RAND_MAX는 rand로 구해질 수 있는 최대값이며, 이 값을 rand 함수의 반환값에 나누면 0~1 사이의 값이 나오게 된다. 여기에 최대값을 곱하면, 0~최대값 사이의 난수를 구할 수 있다. 이 방식은 %를 이용한 방식보다 부하가 덜하며, 보다 랜덤한 수를 얻을 수 있다.


9.

#include <stdio.h>


int print_value(int x);


void main()

{

int x;

while(1)

{

printf("값을 입력하시오(종료는 음수): ");

scanf("%d", &x);

print_value(x);

if (x<0)

break;

}

}


int print_value(int x)

{

int i;

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

printf("*");

printf("\n");

return i;

}


10.

#include <stdio.h>


int is_multiple(int n, int m);


void main()

{

int n, m;

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

scanf("%d", &n);

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

scanf("%d", &m);

if(is_multiple(n, m) == 1)

printf("%d는 %d의 배수입니다.", n, m);

else

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

}


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);


void main()

{

double x1, y1, x2, y2;

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

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

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

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

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

}


double get_distance(double x1, double y1, double x2, double y2)

{

double d;

d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

return d;

}


12.

#include <stdio.h>


int is_prime();


void main()

{

printf("2부터 100사이의 소수를 출력합니다.\n");

is_prime();

}


int is_prime()

{

int i, x;

for(x=2; x<=100; x++)

{

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

{

if(i==x)

printf("%d ", x);

else if (x%i==0)

break;

}

}

}


13.

#include <stdio.h>


double factorial(int n);


void main()

{

int n;

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

scanf("%d", &n);

printf("오일러의 수는 %lf입니다.", factorial(n));

}


double factorial(int n)

{

double e=1, result=1, i;

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

{

result = result*i;

e = e + 1/result;

}

return e;

}


14.

#include <stdio.h>


int is_leap(int n);


void main()

{

int n;

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

scanf("%d", &n);

if(is_leap(n)==1)

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

else if(is_leap(n)==0)

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

}


int is_leap(int n)

{

if (n%4==0 && n%100!=0 || n%400==0)

return 1;

else

return 0;

}


15.

#include <stdio.h>


int round(double f);


void main()

{

double f;

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

scanf("%lf", &f);

round(f);

}


int round(double f)

{

f = (int)(f+0.5);

printf("반올림한 값은 %lf입니다.", f);

return f;

}


16.

#include <stdio.h>

#define e 0.000001


double f_abs(double x);

double f_min(double x, double y);

double f_equal(double x, double y);


void main()

{

double x, y;

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

scanf("%lf", &x);

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

scanf("%lf", &y);

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

printf("두 개의 실수는 서로 같음");

else if(f_equal(x, y) == 0)

printf("두 개의 실수는 서로 다름");

}


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;

}


double f_equal(double x, double y)

{

double z;

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

if (z<e)

return 1;

else

return 0; 

}


17.

#include <stdio.h>


void print_menu(void);

int check_menu_number(int x);


void main()

{

int x;

while(check_menu_number(x)<2)

{

print_menu();

scanf("%d", &x);

if(check_menu_number(x)==1)

continue;

else if(check_menu_number(x)==0)

printf("%d번 메뉴가 선택되었습니다.\n", x);

break;

}


void print_menu()

{

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

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

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

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

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

}


int check_menu_number(int x)

{

if (1<=x && x<=3)

return 0;

else if(x==4)

return 2;

else 

return 1;

}

블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,