该程序假设将二进制数转换为十进制形式。仅使用 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/