c - 存储由零和一组成的大整数

标签 c arrays binary integer scanf

我遇到了一个问题,我必须读取整数 D,使得 D 遵循以下规则:

-> D 仅包含零和一

-> 1 ≤ 数字的长度 D ≤ 10^5。

-> D 可以从零开始

此外,我必须将这个数字存储在数组中,以便该数字的每一位都存储在数组的一个单元格中。

例如,如果数字是001011,它应该存储在数组中

arr[0]=0  arr[1]=0  arr[2]=1  arr[3]=0  arr[4]=1  arr[5]=1

如何做到这一点?

最佳答案

您的问题称为 XY 问题(请参阅 https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。

真正的问题(正如您在评论中链接的那样)不需要存储 D 的数字。而只需计算 1 和 0 的数量。 像这样的东西:

#include <stdio.h>

int main(int argc, const char *argv[]) {

    int rc;
    char c;
    int numZero = 0;
    int numOne = 0;
    while(((rc = scanf("%c", &c)) == 1) && (c == '0' || c == '1'))
    {
        if (c == '0') 
            ++numZero ;
        else
            ++numOne;

        printf("%c", c);
    }
    printf("\n");
    printf("Zeros: %d Ones: %d\n", numZero, numOne);
    return 0;
}

Input:

111000111

Output:

111000111

Zeros: 3 Ones: 6

现在您可以对计数器执行一些逻辑,以确定实际输出是"is"还是“否”。

祝你好运。

关于c - 存储由零和一组成的大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433825/

相关文章:

c - 为什么此函数会导致运行时错误

javascript - 函数中的项目未推送到数组

php - 比较多个数组的相同值

java - 非常基本的东西 : having trouble with a program simulating a slot machine- enums and arrays

c - 无论内容如何,​​写入给定字节数的字符串

c - 此段错误背后的原因

c - execve() 和 execvp() 忽略第一个参数

c - 将一个字符串数组分配给另一个字符串数组

c++ - 对 vector 使用二进制搜索。

Bash shell 十进制到二进制 base 2 转换