我是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]);
}
}
答案 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 */
}
}