1

假设我有一个摄氏温度,int tC,我想将其转换为二进制形式,每个位都在一个整数数组 arr[5] 中。我尝试通过两种方法使用余数来检查数字是否有余数。我尝试使用此功能,但它似乎总是搞砸,即使理论上它确实有效。任何帮助表示赞赏。另外,我可以使用指针,但不太确定在这种特殊情况下如何使用它们。

int main(void)
{
    int arr[5];
    int tC = 39;
    int i;

    for(i=0; i<5; i++)
    {
        if(tC%2==0)
            arr[i] = 0;
        else
            arr[i] = 1;
        tC/=2;
    }
    printf("\n%d\n", arr[5]);
}
4

1 回答 1

4

只需稍作改动:

#include<stdio.h>
int main(void)
{
    int arr[5];
    int tC = 39;
    int i;

    for(i=4; i>=0; i--)
    {
        if(tC%2==0)
            arr[i] = 0;
        else
            arr[i] = 1;
        tC/=2;
    }
    for(i=0; i<5; i++)
        printf("%d", arr[i]);
}

由于您将二进制值存储在数组中并从 0-4 (<5) 循环 - 这些值以相反的顺序保存。您只需要从 4-0(包括 0)循环。此外,在printf您打印存储在arr[5]其中的单个位值时,这是UB因为最后一个索引是 4 - 而且,您没有循环打印数组中的所有位值。

于 2013-11-03T12:36:32.313 回答