c - 当输入是二进制数时,如何反转二进制数并打印它们?

标签 c

我的程序如下。你给它两个正十进制整数,程序以反转的二进制数返回这两个输入数字(包括)之间的间隔内的所有数字。

例如:

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/

相关文章:

ANSI C 中 *& 的取消

c - C中如何跳出循环

c - Linux 运营商检测通知

C: 列出当前 shell 的别名(不是子 shell!)

javascript - 为 C 编译器指定 header 位置(使用 emscripten 编译 R 代码)

c - 如何使我的高度模块化项目易于最终用户编译?

c++ - ebp + 6 而不是 JIT 编译器中的 +8

c++ - 在我的程序中更改共享库中定义的变量不会从共享库中反射(reflect)出来

Java JNI - 返回 jintArray 时出现 EXCEPTION_ACCESS_VIOLATION

c - 计划在五年内返回五个城市的温度