我的程序如下。你给它两个正十进制整数,程序以反转的二进制数返回这两个输入数字(包括)之间的间隔内的所有数字。
例如:
2 4 //input
01 //reversed 10
11 //reversed 11
001 //reversed 100
到目前为止,我已经创建了一个简短的程序,但我无法成功实现返回反转二进制数的函数。 到目前为止,我的程序如下所示:
#include <stdio.h>
#include <ctype.h>
//function for converting to binary:
int toBinary (int decimalNo)
{
if(decimalNo < 2)
{
return decimalNo;
}
return toBinary ( decimalNo / 2 ) * 10 + decimalNo % 2;
}
//function for reversing number:
int reverseBinary(int binary_particular_number)
{
//not knowing how to do that
}
int HI;
int LO;
char X[200]={0};
char test_if_l_c[] = {'c','l'};
int main ()
{
printf("Input an interval:\n");
scanf("%s%d%d", X, &LO, &HI); //pokud do LO nebo HI dame pismeno, tak scanf vrati 0
if ( X[0] != test_if_l_c[0] && X[0] != test_if_l_c[1] || X[1] != 0 || X[2] != 0 || X[3] != 0 || X[4] != 0 || HI <= LO || HI == 0 || LO == 0)
{
printf("Wrong input.\n");
return 0;
}
int count_in_interval = HI - LO + 1;
for(int u = 0; u < count_in_interval ; u++)
{
int particular_number = LO + u;
int binary_particular_number = toBinary(particular_number);
int reversed_binary_particular_number = reverseBinary(binary_particular_number);
printf("%d\n", reversed_binary_particular_number);
}
return 0;
}
你能帮我写一个适合我的函数“reverseBinary”吗?我是编程初学者。
最佳答案
#include <string.h> //you need that for strlen()
void reverseBinary(char binary[])
{
int i = 0,j=strlen(binary)-1;
char temp;
while (i<j)
{
temp = binary[i];
binary[i] = binary[j];
binary[j] = temp;
i++, j--;
}
}
如果你想保留所有前导零,你应该使用字符串而不是 int。 此外,如果您希望它工作,您应该更改 toBinary() 函数以返回字符串而不是 int。如果您需要有关该评论的帮助
关于c - 当输入是二进制数时,如何反转二进制数并打印它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58651774/