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&lt;ENTER&gt;"(在第一次打印之后)。 好的,我现在可以看到解决方案 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 语句,它尝试将整数读取到&amp;pin[i] 指定的地址。由于i 为零,也就是说pin[0] 的地址是pin 数组的第一个元素。

scanf 执行之后(以及它是否成功,这可能是您可能想要研究的)for 语句增加i 的值,检查它是否仍然小于四,并且再次执行大括号之间的代码块。这一次,scanf 语句尝试读取到pin[1]

循环再执行两次,可能会将整数存储在 pin[2]pin[3] 中,然后在将 i 增加到 4 之后立即终止。

【讨论】:

以上是关于c-用for循环填充一维数组的主要内容,如果未能解决你的问题,请参考以下文章

foreach循环中的一维和多维数组

完美解决小程序一维数组循环渲染列表不够用问题

两个一维数组如何判断是相等的?

matlab如何将一个一维数组从大到小排序

用C语言实现一维数组中删除第N个元素的程序怎么写

python中如何将多个一维数组变成二维数组