for循环输出未显示

时间:2012-02-02 22:52:51

标签: c++ loops struct for-loop

此代码接受学生识别及其当前余额的输入。 -999被输入为A-Number以打破循环,或者它将一直运行直到输入30个学生。

程序底部的我的for循环应该按照输入的相反顺序列出输入的A-Number,学生姓名及其余额。但是没有列出任何东西。只是A-Number:,Student:和Balance:

的标题

我知道有一个简单的解释,但我无法思考,我希望有人可以为我指出......

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main(){
    const int maxStudents = 30;
    struct Students{
        string studentName;
        int aNumber;
        double outstandingBalance;};

    Students students[maxStudents];

    int count = 0;
    for( ; count < maxStudents-1; count++)
    {
        cout<<"\nA-Number:";
        cin>>students[count].aNumber;
        if(students[count].aNumber == -999)
                break;
            cout<<"Student Name:";
            cin.ignore();
            getline(cin,students[count].studentName);
            cout<<"\nOutstanding Balance:";
            cin>>students[count].outstandingBalance;
    }

    cout<<setw(20)<<"\nA-Number "<<"Name "<<"Balance ";

    for( ; count >= maxStudents-1; count--)
        cout<<setw(20)<<students[count].aNumber<<" "<<students[count].studentName<<" "<<students[count].outstandingBalance<<endl;

    system("pause");
    return 0;
}

2 个答案:

答案 0 :(得分:4)

你的第二个循环永远不会运行,因为count已经太小了(count == maxStudents - 1如果循环一直运行,所以你可能会得到一个通道)。您的循环条件必须为count >= 0

答案 1 :(得分:0)

你的for循环结束是完全错误的。使用:

for (int i=count; i=>0; i--)

仔细查看是否要按相反的顺序显示第(i)条记录。然后你的循环应该从学生数开始。它应该运行多长时间?只要你的第0个记录没有达到。随着每次继承,你将i减少1.最后使用“i”(计数器)作为你试图显示的记录号。

未来的建议是使用DISPLAY或COUT等术语而不是LIST。和LIST也指链接列表和更多其他东西。