C:scanf到数组

我是C的新手,现在我正在尝试掌握基础知识,并且在将scanf数据直接读入数组时遇到问题。

现在代码看起来像这样:

int main() { int array[11]; printf("Write down your ID number!\n"); scanf("%d", array); if (array[0]=1) { printf("\nThis person is a male."); } else if (array[0]=2) { printf("\nThis person is a female."); } return 0; } 

如您所见,该计划的目的是要求提供一个ID,并从第一个数字确定给定的人是男性(1)还是女性(2)。 然而,似乎我无法使它工作,因为数组没有正确填充(这是在scanf之后通过printf(数组)检查,导致随机数)。 像这样运行这个程序会得出这个人是男性的结果,无论你读到什么号码。

看起来很琐碎,我无法弄清楚问题。

if (array[0]=1)应该是if (array[0]==1)

else if (array[0]=2)else if (array[0]=2)相同。

请注意,赋值的表达式返回赋值 ,在这种情况下if (array[0]=1)始终为true ,这就是为什么如果不更改=将始终执行if语句下面的代码的原因到==

=是赋值运算符,您要比较,而不是赋值。 所以你需要==

另外,如果你只想要一个整数,你为什么要使用数组? 您可能还需要scanf("%d", &array[0]);

 int main() { int array[11]; printf("Write down your ID number!\n"); for(int i=0;i 

%d转换说明符仅转换一个十进制整数。 它不知道你传递一个数组,它不能根据它修改它的行为。 转换说明符指定转换。

数组没有说明符,您必须明确地执行此操作。 以下是四次转换的示例:

 if(scanf("%d %d %d %d", &array[0], &array[1], &array[2], &array[3]) == 4) printf("got four numbers\n"); 

请注意,这需要输入数字之间的空格。

如果id是单个11位数字,则最好将其视为字符串:

 char id[12]; if(scanf("%11s", id) == 1) { /* inspect the *character* in id[0], compare with '1' or '2' for instance. */ } 

使用

 scanf("%d", &array[0]); 

并使用==进行比较而不是=

只是用

cin << array[i];

在你的for循环中,不要忘记包含以下头文件:

#include using namespace std;