C++ 对于C++;-变量未正确递增

C++ 对于C++;-变量未正确递增,c++,visual-c++-2010-express,C++,Visual C++ 2010 Express,我一直在尝试编写一些代码,要求用户为一个会计程序输入几个借记条目。如果用户给出5作为答案,程序应该在继续下一行代码之前询问他借记分录的名称和金额5次。所以,我用循环来解决这个问题,似乎发生了一些奇怪的事情。 这是编译和执行代码时应使用的格式: 您希望记入多少借方分录?:2 1.借方分录名称:示例1 1.借方金额:123 2.借方分录名称:示例2 2.借方金额:456 继续下一行代码 下面是我在C++中为会计程序的这部分写的代码:< /P> #include <iostream>

我一直在尝试编写一些代码,要求用户为一个会计程序输入几个借记条目。如果用户给出5作为答案,程序应该在继续下一行代码之前询问他借记分录的名称和金额5次。所以,我用循环来解决这个问题,似乎发生了一些奇怪的事情。

这是编译和执行代码时应使用的格式:

您希望记入多少借方分录?:2
1.借方分录名称:示例1
1.借方金额:123
2.借方分录名称:示例2
2.借方金额:456



继续下一行代码

下面是我在C++中为会计程序的这部分写的代码:< /P>
#include <iostream>
#include <string>
using namespace std;

int main()
{
   cout << "How many debit entries do you wish to make?: ";
   int entries;
   cin >> entries;
   string debitNames[50];
   float debitAmounts[50];
   int offset = 0;
   int number = 1;
   for (offset = 0; offset < entries; offset++)
   {
      cout << number << ". Debit Entry Name: ";
      cin >> debitNames[offset];
      cout << number << ". Debit Amount: ";
      cin >> debitAmounts[offset];
      for (number = 1; number <= entries; number++)
      {
      }
   }
   char response;
   cin >> response;
   return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
cout>条目;
字符串debitNames[50];
浮动借记金额[50];
整数偏移=0;
整数=1;
对于(偏移量=0;偏移量<条目;偏移量++)
{
不能借记名称[抵销];
借方金额[抵销];
对于(数字=1;数字>响应;
返回0;
}


结果非常奇怪,下面是编译并运行它时发生的情况:

您希望记入多少借方分录?:5
1.借方分录名称:示例1
1.借方金额:123
6.借方分录名称:示例2
6.借方金额:123
6.借方分录名称:示例3
6.借方金额:123
6.借方分录名称:示例4
6.借方金额:123
6.借方分录名称:示例5
6.借方金额:123

继续下一行代码

该程序在将数字列为1后,突然跳到6,并一直保持到5组问题都被问完为止。正如您所知,现在我使用'number'变量只是告诉用户已经问了'number'条目,这是用户自己指定的。试着在编译器中运行此代码,看看Am结果出现了。顺便说一下,我使用Visual C++ 20120 Express版,这对这个问题有什么帮助吗?
非常感谢。

您的内部for循环将始终在条目+1处留下数字:

  for (number = 1; number <= entries; number++)
  {
  }

for(number=1;number您的内部for循环将始终将number保留在条目+1处:

  for (number = 1; number <= entries; number++)
  {
  }

for(number=1;number在循环之前,将
number
变量设置为1

在循环内部,使用以下代码段将
编号
变量设置为
(条目+1)

for (number = 1; number <= entries; number++)
{
}

for(number=1;number在循环之前,将
number
变量设置为1

在循环内部,使用以下代码段将
编号
变量设置为
(条目+1)

for (number = 1; number <= entries; number++)
{
}

用于(number=1;number您输出
number
变量,该变量在
循环到
条目的内部
中递增,
+1…

您输出
number
变量,该变量在
循环到
条目的内部
中递增,
+1…

显然,错误在代码的这一部分:

for (number = 1; number <= entries; number++)
      {
      }

for(number=1;number显然,这部分代码中存在缺陷:

for (number = 1; number <= entries; number++)
      {
      }
(数字=1;数字你为什么不呢

  number++;
  for (int number = 1; number <= entries; number++)
  {
  }
number++;
对于(整数=1;数字条目;
举债;;
对于(int offset=1;offset为什么不呢

  number++;
  for (int number = 1; number <= entries; number++)
  {
  }
number++;
对于(整数=1;数字条目;
举债;;

对于(int offset=1;offset,您希望将1添加到循环末尾的数字。 最简单的方法是使用:

    number++;
for循环

  for (number = 1; number <= entries; number++)   
  {   
  }

for(number=1;number您希望将1添加到循环末尾的数字。
最简单的方法是使用:

    number++;
for循环

  for (number = 1; number <= entries; number++)   
  {   
  }


for(number=1;number)但问题是为什么for循环将number变量递增为(entries+1)?感谢hotadvice提供的答案。但问题是为什么for循环将number变量递增为(entries+1)?感谢hotadvice提供的答案。但为什么编译器将number递增为(entries+1)?非常感谢你的回答Alan Stokes。但是为什么编译器会将数字增加(条目+1)?非常感谢你的回答Alan Stokes。感谢'atornblad',这比我写的代码要好得多。感谢你的合作。但是还有一件事,为什么for循环会将'number'变量增加(条目+1)?从语法上讲,for循环是正确的。那么为什么会发生这种情况呢?是的,但是for循环为每个循环将
number
变量设置为
1
,然后为每个循环增加
number
变量五次。而不是在循环中编写
number++;
而不是整个循环内部for循环。谢谢atornblad的建议,我现在明白了。谢谢。谢谢“atornblad”,这比我写的代码要好得多。谢谢你的合作。但是还有一件事,为什么for循环会将“number”变量增加(条目+1)?从语法上讲,for循环是正确的。那么为什么会发生这种情况呢?是的,但是for循环为每个循环将
number
变量设置为
1
,然后为每个循环增加
number
变量五次。而不是在循环中编写
number++;
而不是整个循环内部for循环。感谢atornblad的建议,我现在明白了。谢谢。我不明白为什么编译器将“number”变量递增(entries+1).你能解释一下吗?你用一个
for
循环,将
number
初始化为一。然后,你用
numberThanks Abrixas2测试它作为你的答案。我不明白为什么编译器将'number'变量递增(条目+1)。您可以解释一下吗?您使用
for
循环,将
编号
初始化为一。然后,使用
numb测试它