我一直在尝试编写一些代码,要求用户为会计程序提供多个借记条目。如果用户给出5作为答案,程序应该在继续下一行代码之前向他询问借记条目的名称和金额5次。所以,我用循环来解决这个问题,似乎发生了一些奇怪的事情。
这是代码在编译和执行时应该运行的格式:
您希望制作多少借记条目?:2
1.借方条目名称:例1
1.借记金额:123
2.借方条目名称:例2
2.借方金额:456
继续下一行代码
这是我在C ++中为这部分会计程序编写的代码:
#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;
}
结果非常奇怪,这是我编译运行时会发生的事情:
您希望制作多少借记条目?:5
1.借方条目名称:例1
1.借记金额:123
6.借方条目名称:例2
6.借方金额:123
6.借方条目名称:例3
6.借方金额:123
6.借方条目名称:例4
6.借方金额:123
6.借方条目名称:例5
6.借记金额:123
继续下一行代码 <
在将数字列为1后,该程序突然跳到6并保持在那里,直到询问了所有5组问题。如你所知,我现在使用&#39;数字&#39;变量只是告诉用户&#39;数字&#39;根据用户自己的指定,已经询问了条目。尝试在编译器中运行此代码,看看是否显示相同的结果。顺便说一下,我使用的是Visual C ++ 20120 Express Edition,这有什么问题吗?
非常感谢。
答案 0 :(得分:1)
你的内部for循环将始终在条目+ 1:
处留下数字 for (number = 1; number <= entries; number++)
{
}
您是否要在此处使用其他变量,而不是重复使用现有的number
?
答案 1 :(得分:1)
好吧,在循环之前,您将number
变量设置为1。
在循环内部,您使用以下代码段将number
变量设置为(entries + 1)
:
for (number = 1; number <= entries; number++)
{
}
为什么不简单地这样做?
cout << (offset + 1) << ". Debit Entry Name: ";
答案 2 :(得分:1)
显然,这部分代码存在错误:
for (number = 1; number <= entries; number++)
{
}
您正在使用number
来显示借记录条目编号
它在上面的循环中递增到enteries + 1
答案 3 :(得分:0)
您输出的number
变量在内部for
循环中递增到entries
+ 1 ...
答案 4 :(得分:0)
你为什么不呢?
number++;
for (int number = 1; number <= entries; number++)
{
}
另外一些更贴近现实生活的解决方案是不要单独举行。创建struct或class更合乎逻辑。
#include <iostream>
#include <list>
#include <time.h>
#include<string>
using namespace std;
struct Debt{
string name;
float owe;
};
int main()
{
cout << "How many debit entries do you wish to make?: ";
int entries;
cin >> entries;
list<Debt> debts;
for (int offset = 1; offset <= entries; offset++)
{
Debt debt;
cout << offset << ". Debit Entry Name: ";
cin >> debt.name;
cout << offset << ". Debit Amount: ";
cin >> debt.owe;
debts.push_back(debt);
for (int number = 1; number <= entries; number++)
{
}
}
int i=0;
list<Debt>::iterator it;
for ( it=debts.begin() ; it != debts.end(); it++ )
cout << "Debt seq " << ++i << " Name " << (*it).name << " debt is " << (*it).owe << endl;
char response;
cin >> response;
return 0;
}
答案 5 :(得分:0)
你想在循环结束时将数字加1。 最简单的方法是使用:
number++;
for循环
for (number = 1; number <= entries; number++)
{
}
是完全不必要的,在编码时,总是从您能想象到的最简单的解决方案开始,并在您继续操作时变得更加复杂。