- 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&C++_Basic > C_Pointer' 카테고리의 다른 글
2개의 double 포인터 변수 입력받고 최대 최소간 사칙연산 (0) | 2020.05.08 |
---|---|
Double 을 int byte로 나눠서 사칙연산 (0) | 2020.05.02 |
C언어 char* int* 형변환 (0) | 2020.03.19 |
C언어 원금,예금출력 (0) | 2020.03.19 |
#C언어 배열 : 이차원 " 배열 포인터 " (0) | 2020.01.14 |