cyphen156
Chapter4 과제 본문
개인 문제풀이임으로 오답이 있을 수 있습니다.
- 두 정수를 입력받아 첫 번째 정수가 두 번째 정수보다 크거나 같으면 1을, 그렇지 않으면 0을 되돌려주는 함수를 작성하고 main에서 그 함수를 불러 결과를 출력하는 프로그램을 작성하라. 함수 원형은 int is_larger(int f, int s);로 한다.
[hint] 논리 연산의 결과는 1이나 0이고 그것을 함수 리턴값으로 돌려준다.
> Enter two integers.
> 3 3(Enter)
> Result is 1.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int is_larger(int f, int s) { if (f >= s) { return 1; } else { return 0; } } int main() { int first, second; printf("Enter two integers.\n"); scanf("%d, %d", &first, &second); printf("Result is %d\n", is_larger(first, second)); return 0; }
- 점 p(x1, y1)와 점 q(x2, y2)의 좌표를 입력받아 두 점 사이의 거리를 출력하는 프로그램을 작성하라. 단, x1, y1, x2, y2는 double로 선언해야 한다.
[hint] 두 점 사이의 거리는 (x2 - x1)의 제곱에 (y2 - y1)의 제곱을 더한 후에 루트를 씌워 제곱근을 구해야 한다. 제곱근을 구하는 함수인 sqrt(square root) 함수를 불러다 쓰려면 #include <math.h>라는 지시어를 추가해야 한다. 이 함수는 double sqrt(double n );로 선언되어 있으므로 distance = sqrt(n);라고 하면 n의 제곱근이 distance에 대입된다.
> Enter the coordinates of point p.
> 1.0 1.0(Enter)
> Enter the coordinates of point q.
> 4.0 5.0(Enter)
> Distance between the points is 5.000000.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> double square(double num1, double num2) { double result; result = num2 - num1; return result * result; } double getDistance(double p1, double q1, double p2, double q2) { double result; result = square(p1, p2) + square(q1, q2); return result; } int main() { double x1, x2, y1, y2, distance; printf("Enter the coordinates of point p\n"); scanf("%lf %lf", &x1, &y1); getchar(); printf("Enter the coordinates of point q\n"); scanf("%lf %lf", &x2, &y2); distance = sqrt(getDistance(x1, y1, x2, y2)); printf("Distance between the points is %.6lf.\n", distance); return 0; }
- 제곱을 구하는 함수를 두 번 호출한 후 그 결과 값을 더하여 a² + b²을 구하라. 함수 원형은 int square(int n);로 한다.
> Enter a, b.
> 3 4(Enter)
> 3 * 3 + 4 * 4 = 25
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int square(int n) { return n * n; } int main() { int a, b, result; printf("Enter a, b.\n"); scanf("%d %d", &a, &b); getchar(); result = square(a) + square(b); printf("%d * %d + %d * %d = %d\n", a, a, b, b, result); return 0; }
- 알파벳 소문자를 읽어 대문자로 변환하는 함수를 작성하고 main에서 그것을 불러 확인하는 프로그램을 작성하라. 함수 원형은 char to_upper_case(Char ch);로 한다.
[hint] 아스키코드 표를 참조하라. 소문자가 대문자보다 크므로 대문자로 변환하려면 'a' - 'A' 만큼의 숫자를 뺀다.
> 알파벳 소문자를 입력하세요.
> m(Enter)
> 소문자 m의 대문자는 M입니다.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> char to_upper_case(char ch) { return ch - 32; } int main() { char ch; printf("알파벳 소문자를 입력하세요.\n"); scanf("%c", &ch); getchar(); printf("소문자 %c의 대문자는 %c입니다.\n", ch, to_upper_case(ch)); return 0; }
- 통계학에서 변이(Variance)란 평균과의 차이 제곱을 모두 더해 그것을 데이터 수로 나눈 값이다. 변이에 루트를 취하면 표준 편차(Standard Deviation)가 된다. 3.0, 5.0, 7.0이라는 데이터가 있다면 평균은 (3.0 + 5.0 + 7.0) / 3 = 5이다. 따라서 변이는 ((5.0 - 3.0)² + (5.0 - 5.0)² + (5.0 - 7.0)²) / 3 = 2.666667이다. 표준 편차를 계산하려면 변이에 루트를 씌워야하므로 math.h에 정의된 sqrt 함수를 불러야 한다. 세 개의 실수를 입력받은 후 표준 편차를 계산하는 프로그램을 작성하되 main에서 반드시 printf("Standared deviation is %lf.\n", std_deviation(a, b, c));라는 명령문을 호출하라.
[hint] main에서 std_deviation함수를 호출하고 std_devation 함수 내부에서 average 함수를 호출한다.
double average(double a, double b, double c); double std_deviation(double a, double b, double c);
> Enter a three real numbers.
> 3 5 7(Enter)
> The standard deviation is 1.632993.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> double square(double a, double b) { double result = a - b; result *= result; return result; } double average(double a, double b, double c) { return (a + b + c) / 3; } double std_deviation(double a, double b, double c) { double avg = average(a, b, c), result; result = sqrt(average(square(avg, a), square(avg, b), square(avg, c))); return result; } int main() { double a, b, c; printf("Enter a three real numbers.\n"); scanf("%lf%lf%lf", &a, &b, &c); getchar(); printf("Standared deviation is %lf.\n", std_deviation(a, b, c)); return 0; }
- C언어 표준 라이브러리에는 반올림 함수가 없는 대신 floor(3.14) = 3.000000, ceil(3.14) = 4.000000 식으로 floor(바닥) 함수와 ceil(ceiling, 천정) 함수를 제공한다. 이 함수들은 double 형 인자를 받아서 double 형 리턴 값을 돌려준다. math.h 파일을 포함하면 이 함수들을 불러다 쓸 수 있다. 양의 실수를 입력받은 후에 그것을 반올림한 정수를 돌려주는 함수를 만들고 main에서 그 결과를 확인하라.
[hint] 입력 값에 0.5를 더한 뒤 floor 함수를 적용하면 반올림한 결과가 나온다. 이를 int형으로 변환해야 한다.
floor = 버림, ceil = 올림, round = 반올림
double round_up(double n);
> Enter a positive real number.
> 4.625(Enter)
> The round up value is 5.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> double round_up(double n) { return floor(n + 0.5); } int main() { double num; printf("Enter a positive real number.\n"); scanf("%lf", &num); getchar(); printf("The round up value is %d.\n", (int)round_up(num)); return 0; }
//모든 예제 소스는 한빛 미디어홈페이지에서 찾으실 수 있습니다.
IT CookBook, 전공자를 위한 C 언어 프로그래밍 (hanbit.co.kr)
또는 cyphen156/Work-space: Studying (github.com)에서 찾으실 수 있습니다.
'프로그래밍 > C언어' 카테고리의 다른 글
Chapter5 과제 (0) | 2023.06.21 |
---|---|
Chapter5 조건문 : If와 Switch (0) | 2023.06.02 |
Chapter4 함수Ⅰ (0) | 2023.02.09 |
Chapter3 과제 (0) | 2023.02.03 |
Chapter3 변수와 상수, 대입문과 연산 (0) | 2023.02.01 |