cyphen156

Chapter4 과제 본문

프로그래밍/C언어

Chapter4 과제

cyphen156 2023. 2. 10. 15:19

개인 문제풀이임으로 오답이 있을 수 있습니다.

  1. 두 정수를 입력받아 첫 번째 정수가 두 번째 정수보다 크거나 같으면 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;
    }
  2. 점 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;
    }
  3. 제곱을 구하는 함수를 두 번 호출한 후 그 결과 값을 더하여 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;
    }
  4. 알파벳 소문자를 읽어 대문자로 변환하는 함수를 작성하고 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;
    }
  5. 통계학에서 변이(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;
    }
     
  6. 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