본문 바로가기

프로그래밍/c/c++

[C] 쉽게 풀어쓴 C EXPRESS 제 5장 Programming 문제 풀이

반응형




1. 사용자로부터 2개의 정수를 입력받아서 첫 번째 정수를 두 번째 정수로 나누었을 때 얻게되는 몫과 나머지를 출력하는 프로그램을 작성하라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
    int x, y, mog, na; //몫,나머지
 
    printf("2개의 정수를 입력하시오: ");
    scanf("%d %d"&x, &y);
 
    mog = x / y;
    na = x % y;
 
    printf("몫: %d  나머지: %d\n", mog, na);
 
    return 0;
 
}
cs


[OUTPUT]





2. 2개의 double형의 실수를 읽어서 합, 차, 곱, 몫을 구하는 프로그램을 작성하라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(void)
{
    double x, y, sum, sub, mul, div;
 
    printf("2개의 실수를 입력하시오: ");
    scanf("%lf %lf"&x, &y);
 
    sum = x + y;
    sub = x - y;
    mul = x * y;
    div = x / y;
 
    printf("%lf %lf %lf %lf \n", sum, sub, mul, div);
 
    return 0;
}
cs


[OUTPUT]





3. 3개의 정수 값을 입력받아서, 3개의 정수 값 중에서 최대값을 출력하는 프로그램을 작성하라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(void)
{
    int x, y, z, max;
 
    printf("3개의 정수를 입력하세요: ");
    scanf("%d %d %d"&x, &y, &z);
 
    max = x > y ? (x > z ? x : z) : (y > z) ? y : z;
 
    printf("최대값 %d\n", max);
 
    return 0;
}
cs


[OUTPUT]





4. cm로 표현된 키를 입력받아 피트와 인치로 변환하는 프로그램을 작성하라. 단, 1피트는 12인치이고 1인치는 2.54cm이다.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
    int x, ft = 0;
    float in = 0;
 
    printf("키를 입력하시오: ");
    scanf("%d"&x);
 
    in = x / 2.54;
    ft = in / 12;
 
    printf("%dcm는 %d피트 %f인치입니다.\n", x, ft, in);
 
    return 0;
}
cs


[OUTPUT]





5. 100보단 작은 정수를 입력받아서 이것을 십의자리, 일의자리로 분리하여 출력하는 프로그램을 작성하라. 즉 사용자가 정수 23을 입력하면 2,3을 차례로 출력하면 된다.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void)
{
    int x;
 
    printf("정수를 입력하시오: ");
    scanf("%d"&x);
    
    printf("십의자리: %d\n", x / 10);
    printf("일의자리: %d\n", x % 10);
 
    return 0;
}
cs


[OUTPUT]



6. int형의 정수를 비트 연산자를 사용하여서 2의 보수(2's complement)로 변환하는 프로그램을 작성하라. 2의 보수는 먼저 전체 비트를 반전시킨 후에 1을 더하면 된다.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void)
{
    int x;
 
    printf("정수를 입력하시오: ");
    scanf("%d"&x);
 
    printf("2의 보수: %d\n", ~x+1);
 
    return 0;
}
cs


[OUTPUT]





7. 정수에 비트연산자 <<를 한번 적용하면 2를 곱한 다음 값을 얻을 수 있다. 또 정수에 비트 연산자>>를 한번 적용하면 2로 나눈 값을 얻을 수 있다. 사용자로부터 정수 x, y를 입력받아서 x<<y의 값을 출력하는 프로그램을 작성하라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void)
{
    int x,y;
 
    printf("정수를 입력하시오: ");
    scanf("%d"&x);
    printf("2를 곱하고 싶은 횟수: ");
    scanf("%d"&y);
 
    printf("%d<<%d의 값: %d\n", x, y, x << y);
    return 0;
}
cs


[OUTPUT]





8. 구의 표면적과 체적을 구하는 프로그램을 작성하라. 구의 반지름은 실수로 입력된다. 아래의 공식을 사용하라. 파이값은 기호 상수를 사용하여 정의하라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#define PIE 3.14
 
int main(void)
{
    float A, V, r;
    printf("반지릅을 입력하시오: ");
    scanf("%f"&r);
 
    A = 4.0 * PIE*r*r;
    V = 4.0 / 3.0 * PIE*r*r*r;
 
    printf("구의 표면적: %f  구의 체적: %f\n", A, V);
    return 0;
}
cs


[OUTPUT]





9. 그리스 최초의 수학자이자 천문학자인 탈레스(Thaies)는 지팡이 하나로 피라미드의 높이를 재었다고 한다. 탈레스는 지팡이를 똑바로 땅에 세우고 지팡이를 움직여서 지팡이의 그림자와 피라미드의 그림자를 일치시켰다. 삼각형 ABC와 삼각형 ADE는 닮음꼴이므로 다음의 수식이 성립한다.

AC : AE = BC : DE

따라서 AC와 AE, BC를 안다면 DE를 계산할 수 있다. AC와 AE, BC를 입력하여서 DE를 구하는 프로그램을 작성하라. 입력되는 수치는 모두 실수로 한다.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(void)
{
    float AC, AE, BC, DE;
 
    printf("AC와 AE, BC를 입력해 주세요: ");
    scanf("%f %f %f"&AC, &AE, &BC);
 
    DE = AE * BC / AC;
 
    printf("DE는 %f입니다.\n", DE);
 
    return 0;
}
cs


[OUTPUT]





10. 조건 연산자 ?만을 이용하여 2차원 공간의 x 좌표와 y 좌표를 입력받아서 그 좌표가 속하는 사분면을 출력하는 프로그램을 작성하라. (x>0 && y>0)? printf("1사분면"):printf(""); 와 같은 문장을 사용하여 작성한다.

 좌표의 부호

사분면 

 x > 0, y > 0

 1사분면

 x < 0, y > 0

 2사분면

 x < 0, y < 0

 3사분면

 x > 0, y < 0

 4사분면


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(void)
{
    int x, y,one,two,three,four;
 
    printf("x좌표 y좌표를 입력해주세요: ");
    scanf("%d %d"&x, &y);
 
    one = (x > 0 && y > 0) ? printf("1사분면\n") : printf("");
    two =(x < 0 && y>0) ? printf("2사분면\n") : printf("");
    three = (x < 0 && y < 0) ? printf("3사분면\n") : printf(""); 
    four =(x > 0 && y<0) ? printf("4사분면\n") : printf("");
        return 0;
}
cs


[OUTPUT]





11. 약 2200년 전에 그리스의 에라토스테네스는 최초로 지구의 크기를 측정하였다. 일단 지구를 구형으로 가정하고 또 태양 광선은 지구의 어느 곳에서나 평행하게 비친다고 가정하였다. 또 원호의 길이는 중심각에 비례한다는 원리를 사용하였다. 하지날 정오에 시에네에서 햇빛이 수직으로 비칠 때, 알렉산드리아에서는 막대와 그림자가 이루는 각도가 7.2º로 측정되었다. 또 시에네에서 알렉산드리아까지의 거리는 약 900km로 측정되었다. 이것을 이용하여서 지구의 반지름을 계산하여라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#define PIE 3.14
 
int main(void)
{
    float r=0;
 
    r = 900 * 360 / (7.2 * 2 * PIE);
 
    printf("반지름 = %f\n", r);
 
    return 0;
}
cs


[OUTPUT]





12. 비트 이동연산을 이용하여 문자 4개를 받아서 하나의 unsigned int형의 변수 안에 저장하는 프로그램을 작성하라. 첫 번째 문자는 비트0부터 비트7까지에 저장되고 뚜 번째 문자는 비트8부터 비트15까지, 세 번째 문자는 비트16에서 비트23까지, 네 번째 문자는 비트24부터 비트31까지 저장된다. 결과로 생성되는 정수값은 16진수로 출력하도록 한다. 비트 이동 연산과 비트 OR 연산을 사용하라.


[CODE]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
 
int main(void)
{
    char ch;
    unsigned int num = 0x00000000;
 
    printf("첫번째 문자: ");
    scanf("%c"&ch);
    num = num | ch;
    getchar();
 
    printf("두번째 문자: ");
    scanf("%c"&ch);
    num = num << 8;
    num = num | ch;
    getchar();
 
    printf("세번째 문자: ");
    scanf("%c"&ch);
    num = num << 8;
    num = num | ch;
    getchar();
 
    printf("네번째 문자: ");
    scanf("%c"&ch);
    num = num << 8;
    num = num | ch;
    getchar();
 
    printf("결과값: %08x\n", num);
    return 0;
}
cs


[OUTPUT]






반응형