" content="[C언어 Express] 5장 실습코드 답안 :: IT 복수전공 일기장" />

카테고리 없음

[C언어 Express] 5장 실습코드 답안

뱌재데 2024. 6. 25. 23:12
728x90

CHAPTER 5. 수식과 연산자

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

1번 문제

#include <stdio.h>

int main(){
	int a, b, c, x;
    printf("엔터를 통해 3개의 정수를 입력하세요\n");
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &c);
	
    # x = (a>b?a:b)?(a>c?a:c):(c>b?c:b); <- 이렇게 쓰지 말기
	
	x = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
    printf("%d",x);
	return 0;
}

 

 

 

2) 100보다 작은 정수를 입력 받아 십의 자리, 일의 자리로 분리하여 출력하는 프로그램을 작성하시오. 

문제 2번

#include <stdio.h>

int main(){
	int a;
    printf("두 자리 정수를 입력하시오\n");
    scanf("%d", &a);
    printf("십의 자리: %d\n",a/10);	
    printf("일의 자리: %d\n",a%10);
    
	return 0;
}

 

 

3) int형의 정수를 2의 보수로 변환하는 프로그램을 작성하시오.

문제 3번 설명

 

#include <stdio.h>

int main(){
    int num, complement;

    // 사용자로부터 정수를 입력받음
    printf("정수를 입력하세요: ");
    scanf("%d", &num);

    // 전체 비트를 반전시킨 후 1을 더하여 2의 보수를 계산
    complement = ~num + 1;

    // 결과 출력
    printf("%d의 2의 보수는 %d입니다\n", num, complement);

    return 0;
}

 

 

 

 

4) 구의 표면적과 체적을 구하는 프로그램을 작성하시오. 

문제 4번

#define PI 3.1415926535
#include <stdio.h>

int main(){
	float r;
    printf("반지름을 실수로 입력하시오\n");
    scanf("%f", &r);
    printf("표먼적: %f\n", 4.0/3.0*PI*r*r*r);
    printf("체적: %f\n",4.0*r*r*PI);	
    
	return 0;
}
#float 연산에서 정수연산을 실행하지 않도록 할 것

 

 

 

5) 조건연산자만을 이용하여 2차원 공간의 x 좌표와 y 좌표를 입력 받아 그 좌표가 속하는 사분 면을 출력하는 프로그램을 작성하시오.

5번 문제

#include <stdio.h>

int main() {
    int x, y;
    printf("x 좌표를 입력하시오: ");
    scanf("%d", &x);
    printf("y 좌표를 입력하시오: ");
    scanf("%d", &y);

    (x > 0 && y > 0) ? printf("1사분면\n") :
    (x < 0 && y > 0) ? printf("2사분면\n") :
    (x < 0 && y < 0) ? printf("3사분면\n") :
    (x > 0 && y < 0) ? printf("4사분면\n") :
    printf("좌표축 위에 있습니다\n");

    return 0;
}

 

 

 

6) 비트 이동 연산을 이용하여 문자 4개를 받아서 하나의 unsigned int 형의 변수 안에 저장하 는 프로그램을 작성하시오

6번 문제

#include <stdio.h>

int main() {
    unsigned int result = 0;
    char ch1, ch2, ch3, ch4;

    // 문자 입력 받기
    printf("첫번째 문자를 입력하시오: ");
    scanf(" %c", &ch1);  // 앞에 공백을 추가하여 이전 입력 버퍼를 무시함

    printf("두번째 문자를 입력하시오: ");
    scanf(" %c", &ch2);

    printf("세번째 문자를 입력하시오: ");
    scanf(" %c", &ch3);

    printf("네번째 문자를 입력하시오: ");
    scanf(" %c", &ch4);

    // 비트 연산으로 각 문자를 결과 변수에 저장
    result = (result | ch1) | (ch2 << 8) | (ch3 << 16) | (ch4 << 24);

    // 결과 출력
    printf("결과값: %X\n", result);

    return 0;
}