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;
}
'프로그래밍 > 쉽게 풀어쓴 C언어 Express' 카테고리의 다른 글
쉽게 풀어쓴 C언어 Express 9장 Exercise (0) | 2018.10.19 |
---|---|
쉽게 풀어쓴 C언어 Express 9장 Summary (0) | 2018.10.19 |
쉽게 풀어쓴 C언어 Express 8장 Exercise (3) | 2018.10.05 |
쉽게 풀어쓴 C언어 Express 8장 Summary (0) | 2018.10.05 |
쉽게 풀어쓴 C언어 Express 7장 Programming (2) | 2018.09.28 |