gpt4 book ai didi

c - 如何将 int 的各个单元存储在 int 数组中; C语言

转载 作者:行者123 更新时间:2023-12-05 06:16:59 27 4
gpt4 key购买 nike

我是一个从 C 开始的初学者,正在做一些关于 codewars 的练习。习题要求我取一个十进制的int,将其转换成二进制并输出二进制数中1的个数。在我不完整的代码下面。我将二进制文件存储在 int b 中,我想将它输出到一个数组中,这样我就可以运行一个循环来搜索 1 并输出总和。

提前致谢!

#include <stddef.h>
#include <stdio.h>

//size_t countBits(unsigned value);
int countBits(int d);

int main() {
int numD = 1234;
int numB = countBits(numD);

printf("The number %d converted to binary is %d \n", numD, numB);
}

int countBits(int d) {
if (d < 2) {
return d;
} else {
int b = countBits(d / 2) * 10 + d % 2; //convert decimal into binary
int c;
int bArray[c];
}

最佳答案

你的函数几乎是正确的:

  • 您应该将参数类型定义为unsigned 以避免出现负数问题
  • 你应该在 else 分支中返回 b。尝试使用基数 10 作为中间表示是无用的,并且对于大于 1023 的数字会失败。

这是更正后的版本:

int countBits(unsigned d) {
if (d < 2) {
return d;
} else {
return countBits(d / 2) + d % 2;
}
}

有许多更有效的方法来计算一个字中的位数。

查看 Sean Eron AndersonBit Twiddling Hacks用于经典和高级解决方案。

关于c - 如何将 int 的各个单元存储在 int 数组中; C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61860004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com