c - 二进制转十进制

标签 c

该程序假设将二进制数转换为十进制形式。仅使用 scanf()printf()库函数。接受char array来自用户 ---无提示输出十进制形式,函数必须与参数( char binaryString[] )一起使用,转换结果必须在 main 中打印出来。程序无法正常工作,我认为我没有在函数 binaryToDecimal 中正确地将二进制形式转换为十进制形式因为我不能使用pow()我迷路了

#include <stdio.h>
#include <math.h>

int binaryToDecimal(char binaryString[]) {    
    int c, j = 1, decimalNumber = 0;

    for (binaryString[c = 0]; binaryString[c] > binaryString[33];
         binaryString[++c]) {

        while (binaryString[c] != 0) {
            remainder = binaryString[c] % 10;
            decimalNumber = decimalNumber + remainder * j;
            j = j * 2;
            binaryString[c] = binaryString[c] / 10;
        }
    }
    return decimalNumber;
}

int binaryToDecimalMain() {
    int arraysize = 33;
    char binaryString[arraysize];
    scanf("%32s", binaryString);
    printf("%d",binaryToDecimal(binaryString []);

    return 0;
}

最佳答案

我不会给你算法,因为你似乎正在学习如何编程,并且学习发现如何解决给你的问题对你来说很重要。但我可以给你一些提示:

  • 仅使用binaryString 与“0”或“1”进行比较。不要尝试对其进行任何类似“%”的操作。
  • 逐个字符地迭代binaryString(for内没有while[这仅适用于这种情况,有一些算法需要做这样的事情])
  • 您的转换逻辑是正确的

您还应该调用主函数main

关于c - 二进制转十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25693492/

相关文章:

c - 斐波那契数列的段错误

使用 MPI 更改变量的值

c - 如何读取不同格式的行

c - 打印字符数组

c - 将 *next 列表指针设置为 NULL

c - 在 argv 上使用 fopen 时出现段错误

c - 链表图实现中 Dijkstra 算法的大问题

python - 如何使用 cpython 将结构数组传递给 DLL 函数?

c - PlaySound 功能奇怪的行为

c - 为什么我们必须在同一台机器上为不同的操作系统重新编译 c 源代码?