c-用for循环填充一维数组
Posted
技术标签:
【中文标题】c-用for循环填充一维数组【英文标题】:c-fill a one dimensional array with for loop 【发布时间】:2021-12-03 15:38:29 【问题描述】:我可以理解第一个解决方案。但在第二个解决方案中,我对scanf
的方式感到困惑,同时接受 4 个值并将它们应用于for
循环。
//first solution
#include <stdio.h>
int main()
int pin[4],i;
for(i=0; i<4; i++)
printf("Give value: ");
scanf("%d", &pin[i]);
return 0;
//second solution
#include <stdio.h>
int main()
int pin[4],i;
printf("Give 4 values: ");
for(i=0; i<4; i++)
scanf("%d", &pin[i]);
return 0;
【问题讨论】:
什么是令人困惑的,有什么区别?请修正格式。 尝试用第一个例子回答"42 -1 2021 0<ENTER>"
(在第一次打印之后)。
好的,我现在可以看到解决方案 1 和 2 完全相同。但让我感到困惑的部分是,我可以同时给出 4 个值。对我来说没有意义因为scanf在for循环里面,必须执行4次。
【参考方案1】:
不同之处在于,在第一个示例中,有一个 printf 在循环的每次迭代中询问您的输入值,而在第一个示例中,在循环之前有一个 printf(只有一个)。
两个例子中重要的操作(scanf)完全相同。
【讨论】:
【参考方案2】:scanf
commamd 不会同时读取四个值。
这是一个循环的示例:一段代码多次执行相同的操作。
for(i=0; i<4; i++)
scanf("%d", &pin[i]);
for
语句的作用是,首先将i
初始化为零,然后检查i
是否小于四,然后执行大括号内的代码。这就是scanf
语句,它尝试将整数读取到&pin[i]
指定的地址。由于i
为零,也就是说pin[0]
的地址是pin
数组的第一个元素。
在scanf
执行之后(以及它是否成功,这可能是您可能想要研究的)for
语句增加i
的值,检查它是否仍然小于四,并且再次执行大括号之间的代码块。这一次,scanf
语句尝试读取到pin[1]
。
循环再执行两次,可能会将整数存储在 pin[2]
和 pin[3]
中,然后在将 i
增加到 4 之后立即终止。
【讨论】:
以上是关于c-用for循环填充一维数组的主要内容,如果未能解决你的问题,请参考以下文章