본문 바로가기
IT/프로그래밍

C 프로그래밍 (새내기를 위한 첫 C 언어 책) 3장 답지 및 솔루션

by nutrient 2021. 5. 25.
728x90
728x170

 

1. 다음 프로그램의 결과를 아래의 칸에 맞춰 쓰시오.

#include <stdio.h>
 
int main(void)
{
    int age = 20;
    double gpa = 4.19, weight = 72.3;
 
    printf("Result \nage=%3d \nGPA=%4.1lf\n", age, gpa);
    printf("weight=%5.1lf\"kg\"\n",weight);
 
    return 0;
}

age= 20
GPA= 4.2
weight= 72.3"kg"

 

2. 다음 프로그램을 실행했을 때의 결과를 아래의 칸에 맞춰 쓰시오.

#include <stdio.h>
 
int main(void)
{
    int op1 = 10, op2 = -20, sum;
 
    sum = op1 + op2;
 
    printf("%d+%d = %d\n", op1, op2, sum);
    printf("%3d + %3d = %3d\n", op1, op2, sum);
    printf("%3d%-+3d = %3d\n\n", op1, op2, sum);
    printf("%2d %%%2d = %2d\n", op1, 3, op1 % 3);
 
    return 0;
}

10+-20=-10
 10 + -20 = -10
 10-20 = -10
10 % 3 = 1

 

3. 다음은 국어와 음악 점수를 입력받아 평균을 구한 후 출력하는 프로그램이다. 이 프로그램에는 밑줄이 그어진 곳에 모두 6가지의 잘못이 있다. 잘못된 곳을 찾아 이유를 설명하고 올바르게 수정하시오.

#include <stdio.h>
 
int main(void)
{
    int kor, music;
 
    printf('국어 음악 점수는?');
    scanf("%d %d", kor, music);
 
    double ave;
    ave = kor + music / 2.0;
 
    printf("=====================\n");
    printf("국어     음악    평균\n");
    printf("--------------------\n");
    printf("%3d    %3d    %d \n", kor, music, ave);
    printf("=====================\n");
 
    return 0;
}

 7번째 줄:  "
 8번째 줄:  %d 사이 공백 지움 scanf 사용되는 변수 앞에 & 필요.
10번째 줄:  7번째 줄 이전으로 옮김.
11번째 줄:  (kor + music)
16번째 줄:  %lf

 

4. 다음 프로그램을 실행하면 결과가 이상하게 나온다. 그 이유를 설명하고 올바른 결과가 나오도록 하려면 어떻게 수정해야 하는지 쓰시오.

#include <stdio.h>
 
int main(void)
{
    int r = 5;
    double length;
 
    length = 2 * 3.14 * r;
 
    printf("둘레를 구할 원의 반지름은?");
    scanf_s("%d",&r);
    printf("반지름이 %d인 원의 둘레는 %.2lf \n", r, length);
 
    return 0;
}

8번째 줄 내용을 11번째과 12번째 줄 사이에 넣는다.

 

5. 삼각형의 밑변과 높이를 입력받아 넓이를 구한 후 다음과 같이 출력하는 프로그램을 작성하시오.

#include <stdio.h>
 
int main(void)
{
    double base;
    double height;
    double area;
 
    printf("밑변, 높이:");
    scanf_s("%lf%lf", &base, &height);
    area = base * height / 2.0;
 
    printf("밑변=%.2lfcm, 높이=%.2lfcm인 삼각형의 면적=%.2lf㎠\n", base, height, area);
 
    return 0;
}

 

6. 화씨 단위의 온도를 입력받아 섭씨 단위의 온도를 구하는 프로그램을 작성하시오.

#include <stdio.h>
int main(void)
{
    double fah, cel;
    printf("화씨온도를 입력하세요 :");
    scanf_s("%lf",&fah);
    cel = (fah - 32)*(5.0 / 9.0);
    printf("화씨온도 %.1lf의 섭씨온도는 %.1lf입니다.\n", fah, cel);
 
    return 0;
}

 

7. 키보드에서 문자를 한 개 입력받은 후, 그 문자에 해당하는 ASCII 코드 값을 구하는 프로그램을 작성하시오.

#include <stdio.h>
 
int main(void)
{
    char a;
 
    printf("문자를 입력하세요:");
    scanf_s("%c", &a);
 
    printf("%c의 ASCII코드 값은 %d입니다.\n",a,a );
 
    return 0;
}

 

8. 키보드에서 8진수 정수와 16진수 정수를 하나씩 입력받은 후, 이 입력 값들과 두 정수의 합을 10진 정수로 출력하는 프로그램을 작성하시오.

#include <stdio.h>
 
int main(void)
{
    int a, b;
 
    printf("8진수 16진수를 순서대로 입력하세요.:");
    scanf_s("%o%x", &a, &b);
    printf("%o(8)+%x(16)=%d\n", a, b, a + b);
 
    return 0;
}

 

9. 반지름을 입력받아 원의 둘레와 면적, 그리고 구의 부피를 구한 후 세 개의 결과 값의 소수 자리를 세로로 맞추어 출력하시오. 

#include <stdio.h>
 
int main(void)
{
    double radius, pi = 3.141592, area, volume, circumstance;
 
    printf("반지름(cm)를 입력하세요.");
    scanf_s("%lf", &radius);
    circumstance = 2 * pi*radius;
    area = pi*radius*radius;
    volume = (4.0 / 3.0)*pi*radius*radius*radius;
 
    printf("둘레=%7.2lf㎝\n", circumstance);
    printf("면적=%7.2lf㎠\n", area);
    printf("부피=%7.2lf㎤\n", volume);
 
    return 0;
}

 

10.키와 몸무게를 입력받아 키에 맞는 표준 체중을 구한 후 자신의 몸무게와 표준 체중과의 차이를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
 
int main(void)
{
    double height, weight, std_weight, gap;
    double lb, feet;
 
 
    printf("키(cm)를 입력하세요.");
    scanf_s("%lf", &height);
    printf("몸무게(kg)를 입력하세요.");
    scanf_s("%lf", &weight);
    printf("\n");
 
    lb = weight*2.20459;
    feet = height / 30.48;
    std_weight = (height - 100.0)*0.9;
    gap = weight - std_weight;
 
    printf("당신의 키는 %.1lfcm (%.1lffeet)입니다.\n", height, feet);
    printf("당신의 체중은 %.1lfkg (%.1lflb)입니다.\n", weight, lb);
    printf("표준 체중 %.1lfkg과의 차이는 %+.1lfkg입니다.\n", std_weight, gap);
 
    return 0;
}
728x90
그리드형

댓글