안녕하세요..진수변환에대해서 질문드립니다.
재바우
2023.04.01
안녕하세요.. 제가 2진수를 10진수와 16진수로 변환하는건데요.. 소스는 이렇습니다.
#includestdio.h
void jinsu(int* a)
{
int b = 0;
int c = 128;
for(int i = 0; i 8; i++)
{
b += a[i] * c;
c = c / 2;
}
printf(10진수의 값은 %d 입니다, b);
printf(\n16진수의 값은 0x%x 입니다, b);
}
int main(void)
{
int a[8];
int i;
printf(2진수를 입력해주삼 : );
for(i = 0; i 8; i++)
{
scanf(%d, &a[i]);}
for(i = 0; i 8; i++)
{
if(a[i]!=0 && a[i]!=1)
{
printf(2진수가 아닙니다.);
a[i]=0;
break;
}
}
jinsu(a);
return 0;
}
이건데요 입력값을 0 하고 1이 아니면 다시 입력받아서 값을 출력하는건데요.
예를 들어 0 1 0 1 0 0 0 9 이렇해 입력을 하면 생각대로는 0 이나와야 되는데
for문 두개가 다실행이 되어버립니다 단순히 끝자리 9만 인식을못해서 86이 나와야 되는데
85가 나옵니다..
어디가 잘못된거지 고수분들의 답변부탁드립니다.
-
By은지
둘다 실행되는 이유는 당연히 2진수가 아닌데 for문을 빠져 나와서 jinso(a)을 실행하니깐요.. 다 실행되는거죠..ㅎ