【发布时间】:2013-11-02 03:13:45
【问题描述】:
我有一个程序会询问学生姓名和他/她的 10 个班级。该代码是为了防止重复条目,但每次我运行程序时它都会说每个条目都已经存在。我已经经历了一千次这件事,但我一生都无法弄清楚。对我的问题的任何见解将不胜感激。
#include <iostream>
using namespace std;
struct student
{
string name;
string classes[10];
};
int main(int argc, char *argv[])
{
string test_name;
student entry;
cout << "Enter the name of the student you wish to insert (string) \n";
cin >> entry.name;
for(int i = 0; i < 9; i++)
{
cout << "Enter class number " << i + 1 << " For " << entry.name << endl;
cin >> test_name;
for(int j = 0; j < 9; j++)
if(test_name == entry.classes[j])
{
cout << "Class already exists for " << entry.name << ". Please try again.\n";
i -= 1;
}
else
{
entry.classes[i] = test_name;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
【问题讨论】:
-
您没有嵌套的
if语句。 -
对不起应该说循环不是如果
-
我相信这只会循环 9 次,而不是 10 次:
for(int i = 0; i < 9; i++)。所以改为for(int i = 0; i < 10; i++)。不会解决您的问题,但否则您的任务将失败! -
不,它肯定会运行 10 次。 0-9 是十个而不是 9 个总数
-
循环只运行 0-8。在每次循环迭代之前测试条件
i < 9,一旦该条件为假,循环就结束。当i九岁时,它永远没有机会运行。
标签: c++ if-statement for-loop nested-loops