对于Loop Stuck(.C)

时间:2014-09-22 04:48:29

标签: c arrays loops for-loop

#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

请帮助。

1 个答案:

答案 0 :(得分:3)

较大的for循环中的变量i和较小的循环内的其他i正在混淆!!

更改,使用不同的变量

编辑: 正如David在下面的评论中提到的那样:在完成使用后,您还应该重新初始化Binary

for ( j = 0; j < 8; j++){

        printf("%d", Binary[j]);
        Binary[j] = 0;
    }