저는 사용자가 문자를 입력하고, 각 문자를 골라 내며, 각각을 이진수로 변환하고 각 이진수의 '1'수를 계산하는 프로그램을 작성하고 있습니다. 지금까지는 작업 코드가 있습니다. 그러나 각 바이너리의 출력은 역순입니다. 이처럼 : 내가 원하는 때내 바이너리가 역순으로 출력됩니다.
The character A = 10000010 1's = 2
/필요가 :
The character A = 01000001 1's = 2
나는 이미이를 수정하는 일처럼 간단 할 것이라고 말했다 된 기능의 양을 사용하는 데 필요한입니다 내 binaryPrinter 함수에 대한 재귀. 나는 내가 그 일을 할 수있는 곳과 내가 어떤 주장을 할 지 혼란 스럽다. 어떤 도움이라도 환상적 일 것입니다.
p.s. binaryPrinter 함수의 오른쪽 부분에 배치하면 내 거꾸로 이진 문제를 해결할 것입니다 프로그램을 반복하려면 binaryPrinter 함수에서 재귀를 사용해야합니다.
#include <stdio.h>
#include <stdlib.h>
void binaryPrinter(int digitsLeft, int value, int * numberOfOnes);
void print(char c);
int charToInt(char C)
{
int c;
c=C;
return (int) c;
}
int main()
{
char value;
int result = 1;
while (result != EOF)
{
result = scanf("%c", &value);
if (result != EOF)
{
print(value);
}
}
}
void print(char c)
{
int digits=8, value=c;
int ones=0;
printf("The character %c = ", c);
binaryPrinter(digits, value, &ones);
printf(" 1's = %d\n", ones);
}
void binaryPrinter(int digitsLeft, int value, int * numberOfOnes)
{
for (digitsLeft=8; digitsLeft>0; digitsLeft--)
{
if(value & 1)
{
printf("1");
*numberOfOnes=*numberOfOnes+1;
}
else
{
printf("0");
}
value = value >> 1;
}
}
감사합니다 바머! –