【发布时间】:2014-09-22 04:48:29
【问题描述】:
#include <stdio.h>
int main(void)
{
int ASCII[20] = { 92, 110, 92, 116, 92, 118, 92, 98, 92, 114, 92, 102, 92, 92, 92, 39, 92, 34, 92, 0 };
char *Constants[] = { '\n', '\t', '\v', '\b', '\r', '\f', '\\', '\'', '\"', '\0' };
int Decimal[8] = { 128, 64, 32, 16, 8, 4, 2, 1 };
int Binary[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
int val;
for (int i = 0; i < 20; i++){
val = ASCII[i];
val++; //calculations were one off, so countered mis-calculations with this
for (int i = 0; i < 8; i++){
if (val > Decimal[i]){
val -= Decimal[i];
Binary[i] = 1;
}
}
for (int i = 0; i < 8; i++){
printf("%d", Binary[i]);
}
if ((i + 1) % 2 == 0){
printf("%\n");
}
}
我对 C 语言比较陌生,我正在尝试创建一个将小数(常量)转换为二进制值的简单程序。然而,循环似乎在第一次迭代后卡住了,如下所示:
0101110001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111101111111
0111111101111111
请帮忙。
【问题讨论】:
-
源代码不完整。
-
你能澄清一下吗?
-
您是否打算将最后一个
printf语句设为此printf("\n");? -
char *Constants[] = { '\n', '\t', '\v', '\b', '\r', '\f', '\\', '\'', '\"', '\0' };是一个错误,不应编译。如果您在这里没有得到任何东西,请打开您的编译器警告。 -
“卡住”是因为您没有将
Binary重置为零以进行下一次循环迭代。它保留了它的旧值。解决此问题的一种方法是在Binary[i] = 1; }之后添加else Binary[i] = 0;