将数组中的值设置为仅等于1或0

时间:2017-09-18 13:47:23

标签: c arrays loops

我是C的初学者,试图让用户输入他们想要的数组中的数字(最多10个),然后输入这些数值。但是我的项目说我必须将数组中的值设置为1(如果有值)或0(如果没有)。我也不明白的是,我应该找到阵列的差异和赞美,但是不会改变这些值会改变答案吗?

例如:如果用户输入2 4 5,则数组看起来像(0,0,1,0,1,1,0,0,0,0)。

这是我到目前为止所做的。

#include <stdio.h>
#include <stdlib.h>


int main() {
    int o = 0;
    int p = 0;
    int i = 0;

    printf("Enter the number of elements for set A: ");
    scanf("%d",&o);

    int c[o];

    printf("\nEnter the numbers in set A:\n");
    for(i=0;i<o;i++) {
        scanf("%d",&c[i]);
    }

    printf("\nEnter the number of elements for set B: ");
    scanf("%d",&p);

    int d [p];

    printf("\nEnter the numbers in set B:\n");
    for(i=0;i<p;i++) {
        scanf("%d",&d[i]);
    }
}

2 个答案:

答案 0 :(得分:1)

您的项目意味着当用户输入任何数字时,您必须将与该数字对应的数组的索引设置为1

例如如果用户输入1,您的数组应该看起来像(0, 1, 0, 0, 0, 0, 0, 0, 0, 0)。由于数组索引为0,因此您将第二个元素设置为1而不是第一个。

编辑:1

您的代码应如下所示:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int o = 0;
    int p = 0;
    int i = 0;
    int input = 0;

    printf("Enter the number of elements for set A: ");
    scanf("%d",&o);
    int c[10];//Edited to correct the size of Array as mentioned by @Jonathan Leffler in the comments
    //To set the initial values to 0
    for(i=0; i<o; i++)
    {
        c[i] = 0;
    }

    //Set the value at the index to 1 when user enters it, as you don't need to store them
    printf("\nEnter the numbers in set A:\n");
    for(i=0; i<o; i++)
    {
        scanf("%d", &input);
        c[input] = 1;
    }

    printf("\nEnter the number of elements for set B: ");
    scanf("%d",&p);
    int d[10];
    //To set the initial values to 0
    for(i=0; i<p; i++)
    {
        d[i] = 0;
    }

    printf("\nEnter the numbers in set B:\n");
    for(i=0; i<p; i++)
    {
        scanf("%d", &input);
        d[input] = 1;
    }
}

答案 1 :(得分:0)

如果您只想设置1或0,!!将会提供帮助

printf("\nEnter the numbers in set A:\n");
for(i=0;i<o;i++) {
    if(scanf("%d",&c[i]) == 1)
    {
        c[i] = !!c[i];
    }
    else
    {
    /* do something if scanf failed */
    }
}