c - 我如何修改这个将十进制 int 转换为二进制 int 的函数,它的每个数字都在一个数组中?

标签 c arrays binary decimal

假设我有一个摄氏温度,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]);
}

最佳答案

只需要一点点改变:

#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 - 也,您没有循环打印数组中的所有位值。

关于c - 我如何修改这个将十进制 int 转换为二进制 int 的函数,它的每个数字都在一个数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752990/

相关文章:

arrays - 无需评估即可动态创建结构数组

c++ - 函数头中的 C/C++ 数组变量

c++ - 如何在C++中预订剧院座位?

windows - 如何使用 VirtualBox 创建 VM 的可再发行自包含二进制发行版?

C 编程数学函数 #include <stdlib.h> abs()

c - 从文件读/写练习中的执行问题(新手)

c++ - 结构和数组的初始值设定项太多

java - 用于在 Java 中从右到左每 4 个字符用空格格式化二进制数的正则表达式

c - 用 C 实现列表时,我试图删除第一个元素并保留列表的其余部分

c - 关于 C 中的 malloc() 和 free()