본문 바로가기

C&C++_Basic/C_Pointer

C언어 char변수 16진수 4칙연산

  • char 변수에 저장된 16진수 4칙연산 프로그램을 작성하시오. 하나의 16진수는 2자리로 이루어진다. (예: 3F ).

덧셈의 경우 3F 와 1B를 문자로 입력 받고 각각은 char 형 변수에 저장된다. 3F는 char a0=’3’, a1 = ‘F’ 이 각각 저장되고, 1B도 마찬가지로 char b0=’1’, b1=’B’ 에 각각 저장된다. 연산자도 별도의 char형 변수에 저장된다.

연산결과는 곱셈을 고려하면 최대 4자리를 차지하므로 char c0, c1, c2, c3 에 저장한다.

실행예:

연산식을 입력하시오>> 3F 1B +

5A

연산식을 입력하시오>> 3F 1B -

24

연산식을 입력하시오>> 3F 1B *

6A5

연산식을 입력하시오>> 3F 1B 

 

#include<stdio.h>

int main()
{
	int a,b;
	char c;
	
	printf("두 수와 연산식을 입력하세요 >> \n");
	scanf("%x %x %c",&a,&b,&c);
	int *pa = &a;//16진수 a의 값의 주소를 받는다, pi =&a
    
	char *pA = (char*)&a;
	//변환형 이용 --> pA = pi = &a --> *pA = a
	// 하지만 여기서 차이점은, 이제 1byte로 바뀐 것.
	//즉,입력받은 a의 값을 1byte 단위로 접근하고자 하는 것이다.
    // ex) ++pA 를 하게 되면, 메모리 상에서 1byte 단위로 이동하게 된다.
	char chA =*pA;// chA = *pA = a ,즉, chA는 a 값을 의미
	
	int *pb = &b;
	char *pB = (char*)&b;
	char chB = *pB;
	
	if(c=='+')
	printf("두수의 합은 %02x입니다\n",chA+chB);
	else if(c=='-')
	printf("두수의 차는 %02x입니다\n",chA-chB);
	else if(c=='*')
	printf("두수의 곱은 %02x입니다\n",chA*chB);
	else if(c=='/')
	printf("두수의 나눗셈은 %02x입니다\n",chA/chB);
	else 
	printf("연산식을 잘못 입력하셨습니다");



	 
	
	
	return 0;
}

 

 

윤성우의 열혈 자료구조:C언어를 이용한 자료구조 학습서

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음