본문 바로가기

프로그래밍 언어 문제/C

[C언어] 연습문제9

[문제]

프로그램 사용자로부터 int형 정수 하나를 입력 받아라.
입력 받은 정수의 상위 2byte와 하위 2byte 값을 양의 정수로 출력하라.
그리고 상위 1byte와 하위 1byte에 저장된 값의 아스키 문자를 출력하라.

조건1) 공용체와 구조체를 둘 다 사용할 것

 

[실행결과]

정수 입력: 1145258561
상위 2바이트: 17475
하위 2바이트: 16961
상위 1바이트 아스키 코드: D
하위 1바이트 아스키 코드: A

 

[수정할 코드]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct stDivTwo_tag {
	short lower;
	short upper;
}stDivTwo;

typedef union uNum_tag {
	stDivTwo stDiv;
	char arr[4];
}uNum;

int main(void)
{
	uNum number;

	printf("정수 입력: ");
	scanf_s("%d", &number);
	printf("상위 2바이트: %d\n", number.stDiv.upper);
	printf("하위 2바이트: %d\n", number.stDiv.lower);
	printf("상위 1바이트 아스키 코드: %c\n", number.arr[3]);
	printf("하위 1바이트 아스키 코드: %c\n", number.arr[0]);
	

	return 0;

}

[코드]

#include<stdio.h>

typedef struct divbyte
{
	unsigned short lowerbyte;
	unsigned short upperbyte;
}DivByte;

typedef union divnum
{
	int num;
	DivByte dbyte;
	char arr[4];
}DivNum;

int main(void)
{
	DivNum divnum;

	printf("정수 입력: ");
	scanf_s("%d", &(divnum.num));
	printf("상위 2바이트: %u \n", divnum.dbyte.upperbyte);
	printf("하위 2바이트: %u \n", divnum.dbyte.lowerbyte);
	printf("상위 1바이트 아스키 코드: %c \n", divnum.arr[3]);
	printf("하위 1바이트 아스키 코드: %c \n", divnum.arr[0]);

	return 0;
}

 

<참고>

윤성우의 열혈 C 프로그래밍

'프로그래밍 언어 문제 > C' 카테고리의 다른 글

[C언어] 연습문제5  (0) 2022.04.20
[C언어] 연습문제6  (0) 2022.04.16
[C언어] 연습문제7  (0) 2022.04.15
[C언어] 연습문제8  (0) 2022.04.13
[C언어] 연습문제10  (0) 2022.04.08