<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 4 (11~16)

11. 다음 수식을 계산하는 프로그램을 작성하시오.

 

$$2x^{3}-3x^{2}+\frac{1}{x}$$

#include <stdio.h>
int main(void)
{
    int x;
    double expression;

    printf("x 입력:");
    scanf_s("%d", &x);

    expression = 2.0 * x*x*x - 3.0 * x*x + 1.0 / x;

    printf("ㅡ> x=%d일때 \n f(x)=2x³-3x²+1/x=%.1lf\n", x, expression);

    return 0;
}

x의 자료형, 소수점에 관한 언급이 없어 임의로 정함.

etc-image-0

 

12. 네 자리 정수(num)을 입력받아 천, 백, 십 일의 자리로 분리하여 출력하는 프로그램을 작성하시오,

#include <stdio.h>
int main(void)
{
    int num;
    int chun, baek, sip, il;

    printf("네자리 정수를 입력하세요:");
    scanf_s("%d", &num);

    chun = num / 1000;
    baek = (num % 1000) / 100;
    sip = ((num % 1000) % 100) / 10;
    il = (((num % 1000) % 100)) % 10;

    printf("입력한 수는 %d천%d백%d십%d입니다.\n", chun, baek, sip, il);

    return 0;
}​

 

etc-image-1

 

 

13. 조건 연산자를 이용해 세 수를 입력받아 가장 큰 수를 구하는 프로그램을 작성하시오.

#include <stdio.h>
int main(void)
{
    int a, b, c, max;

    printf("세 개의 정수:");
    scanf_s("%d%d%d", &a, &b, &c);

    max = a > b ? a : b;
    max = max > c ? max : c;

    printf(">>가장 큰 수:%d\n", max);

    return 0;
}

etc-image-2

 

14. 사용자에게 10진 정수를 입력받아 오른쪽으로 3비트 이동시킨 결과와 왼쪽으로 3비트 이동시킨 결과를 10진수로 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main(void)
{
    int num, right, left;

    printf("정수 입력:");
    scanf_s("%d", &num);

    right = num >> 3;
    left = num << 3;

    printf("10 >> 3 = %d \n10 << 3 = %d\n", right, left);

    return 0;
}

etc-image-3

 

15. 학생의 이름(이름 사이에 띄어쓰기 가능)과 국어, 영어, 수학, 출결 점수를 키보드로 입력받아 네 과목 점수의 평균(소수 1자리)을 구하고 합격 여부(평균이 70점 이상이고 출결 점수가 80점 이상인 경우에만 합격)를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main(void)
{
    char name[20];
    int kor, eng, math, attendance;
    double ave = 0;

    printf("학생의 이름:");
    gets_s(name);
    printf("국어:");
    scanf_s("%d", &kor);
    printf("영어:");
    scanf_s("%d", &eng);
    printf("수학:");
    scanf_s("%d", &math);
    printf("출결:");
    scanf_s("%d", &attendance);

    ave = (kor + eng + math + attendance) / 4.0;

    ave >= 70 && attendance >= 80 ?
        printf("\n\n[%s]학생>>합격!\n네 과목의 평균:%.1lf\n출결 점수     :%d\n", name, ave, attendance) :
        printf("\n\n[%s]학생>>불합격!\n네 과목의 평균:%.1lf\n출결 점수     :%d\n", name, ave, attendance);

    return 0;
}

etc-image-4
etc-image-5

 

16. 연도를 입력받아 윤년인지 평년인지를 판단하는 프로그램을 작성하시오.

#include <stdio.h>
int main(void)
{
    int year;

    printf("년도를 입력하세요:");
    scanf_s("%d", &year);

    year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ?
        printf("윤년\n") :
        printf("평년\n");

    return 0;
}

 

etc-image-6
etc-image-7