for循环接受一个比循环条件多的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for循环接受一个比循环条件多的值相关的知识,希望对你有一定的参考价值。

我编写了一个程序,它接受来自用户的值,然后在for循环中迭代该值。在for循环中我接受要存储在数组中的数字。我的问题是for循环接受一个比用户指定的额外值。

int main()
{
  int  i = 0;
  int  a;
  int no_of_boxcars = 0;
  double array[10];
  double boxcart_wt = 0;
  //printf("Enter the no of wagons");
  scanf_s("%d", &no_of_boxcars);        // no of boxcars
  for (i = 0; i<=no_of_boxcars;++i)
  {
    printf("%d \t", i);
    scanf_s("%lf ", &boxcart_wt);   //weight in boxcar

    array[i] = boxcart_wt;
  }
}

如果用户输入3,则应接受3个值

for (i = 0; i<no_of_boxcars;++i)
{
  //but here accepts 4 values
}

如果用户输入3,则应接受4个值

for (i = 0; i<=no_of_boxcars;++i)
{
  //and here accepts 5 values
}
答案

scanf格式的空格匹配任何空白区域和任意数量的连续空白区域。

尾随空间的问题是,然后scanf必须继续读取,直到它读取不是空白的东西,否则它不知道空格何时结束。

这导致您需要提供一些额外的非空白输入的问题。

对于除两种格式之外的所有格式("%c""%["),scanf函数会自动读取并丢弃前导空白区域。因此通常不需要在格式字符串中包含空格。除了那两种不跳过空格的格式之外。

阅读例如this scanf (and family) reference了解更多详情。

另一答案

C中的索引来自0..n-1。在你的for循环中,你来自0..n,这太多了。更改

for (i = 0; i<=no_of_boxcars;++i)

for (i = 0; i<no_of_boxcars;++i)

以上是关于for循环接受一个比循环条件多的值的主要内容,如果未能解决你的问题,请参考以下文章

如何从For循环中制作流

lua for循环。。。如何记录满足条件的输出的次数

vb中的循环语句

3月九日

js中的4种循环结构

基于条件更改行值的 Python for 循环可以正常工作,但不会更改 pandas 数据帧上的值?